macro_rules! anyhow {
(@process_field $error:ident, $field_name:ident = ?$field_value:expr) => { ... };
(@process_field $error:ident, $field_name:ident = %$field_value:expr) => { ... };
(@process_field $error:ident, $field_name:ident = $field_value:expr) => { ... };
(@build_from_fields [$($field_specs:tt)*], $fmt:literal $(, $args:expr)*) => { ... };
(@build_from_fields [$($field_specs:tt)*]; $fmt:literal $(, $args:expr)*) => { ... };
(debug_data = ?$debug_val:expr, operation = %$operation_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
(user_id = %$user_id:expr, session_id = %$session_id:expr, $fmt:literal $(, $args:expr)*) => { ... };
(string_field = %$string_val:expr, int_field = %$int_val:expr, float_field = %$float_val:expr, bool_field = %$bool_val:expr, vec_field = ?$vec_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = ?$field_value:expr),+ $(,)?, $fmt:literal $(, $args:expr)*) => { ... };
(debug_data = ?$debug_val:expr, operation = %$operation_val:expr; $fmt:literal $(, $args:expr)*) => { ... };
(user_id = %$user_id:expr, session_id = %$session_id:expr; $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = ?$field_value:expr),+ $(,)?; $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = %$field_value:expr),+ $(,)?, $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = %$field_value:expr),+ $(,)?; $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = $field_value:expr),+ $(,)?, $fmt:literal $(, $args:expr)*) => { ... };
($($field_name:ident = $field_value:expr),+ $(,)?; $fmt:literal $(, $args:expr)*) => { ... };
(?$field_value:ident, $fmt:literal $(, $args:expr)*) => { ... };
(?$field_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
(%$field_value:ident, $fmt:literal $(, $args:expr)*) => { ... };
(%$field_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, operation = %$operation_val:expr, debug_data = ?$debug_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
(?$field_value:ident, $field_name:ident = %$named_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
(%$field_value:ident, debug_data = ?$debug_val:expr, operation = %$operation_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
(?$field_value:ident, debug_data = ?$debug_val:expr, operation = %$operation_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, debug_data = ?$debug_val:expr, operation = %$operation_val:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, $field_name:ident = $named_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, $field_name:ident = %$named_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, $field_name:ident = ?$named_value:expr, $fmt:literal $(, $args:expr)*) => { ... };
($field_value:ident, $fmt:literal $(, $args:expr)*) => { ... };
($fmt:literal $(, $args:expr)*) => { ... };
($expr:expr) => { ... };
}Expand description
Creates an Error from a format string and arguments, optionally with named fields.
ยงExamples
use anyhow_tracing::{anyhow, Error};
let err: Error = anyhow!("Something went wrong");
let err: Error = anyhow!("Failed to process {}", "input");
let err: Error = anyhow!(field_name = %"field_value", "Error with field");
let err: Error = anyhow!(field_name = ?vec![1, 2, 3], "Error with debug field");
let err: Error = anyhow!(field_name = "field_value", "Error with implicit display field");
// The macro also supports both comma and semicolon syntax to separate fields from message
let x = 42;
let err: Error = anyhow!("Error with message only");
let err: Error = anyhow!(field1 = "value1", field2 = "value2", "Error message");
let err: Error = anyhow!(field1 = "value1", field2 = "value2"; "Error message");