1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/// Creates an ad-hoc [`Error`](crate::Error)
/// from some message or format string.
///
/// Use this macro if you want to bail early from a function
/// that otherwise may return multiple errors
/// or when your codebase is generally using the
/// return type
/// [`lazy_errors::surrogate_error_trait::Result`]:
/// crate::surrogate_error_trait::Result
///
/// A guard clause is a typical use case for this macro:
///
/// ```
/// #[cfg(any(feature = "rust-v1.81", feature = "std"))]
/// use lazy_errors::{err, Result};
///
/// #[cfg(not(any(feature = "rust-v1.81", feature = "std")))]
/// use lazy_errors::{err, surrogate_error_trait::Result};
///
/// fn handle_ascii(text: &str) -> Result<()> {
/// if !text.is_ascii() {
/// return Err(err!("Not ASCII: '{text}'"));
/// }
///
/// // ... code that does the actual handling ...
/// todo!()
/// }
///
/// assert!(handle_ascii("🦀").is_err());
/// ```