Improve Result's Display impl for extension values (#424)

Previously, the `Display` impl for `vk::Result` did not include handling
for extension values. For example, `VK_ERROR_OUT_OF_DATE_KHR` would
display simply as `"-1000001004"`. Now, we fall back to the `Debug` impl
of the `Result` if the value is unknown (i.e. from an extension). This
preserves the current nice messages for non-extension values, and the
numeric output for truly unknown values, but displays the enum variant
name (e.g. `"ERROR_OUT_OF_DATE"`) for extension values.
This commit is contained in:
Theo Bogusta 2021-04-27 14:48:15 +00:00 committed by GitHub
parent 788fda074e
commit d4f50bd350
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 2 deletions

View file

@ -997,7 +997,7 @@ impl fmt::Display for Result {
if let Some(x) = name { if let Some(x) = name {
fmt.write_str(x) fmt.write_str(x)
} else { } else {
self.0.fmt(fmt) <Self as fmt::Debug>::fmt(&self, fmt)
} }
} }
} }

View file

@ -1535,7 +1535,9 @@ pub fn generate_result(ident: Ident, enum_: &vk_parse::Enums) -> TokenStream {
if let Some(x) = name { if let Some(x) = name {
fmt.write_str(x) fmt.write_str(x)
} else { } else {
self.0.fmt(fmt) // If we don't have a nice message to show, call the generated `Debug` impl
// which includes *all* enum variants, including those from extensions.
<Self as fmt::Debug>::fmt(&self, fmt)
} }
} }
} }