pub trait DisplayHex {
type Display<'a>: Display + Debug + LowerHex + UpperHex
where Self: 'a;
// Required methods
fn as_hex<'a>(&'a self) -> Self::Display<'a>;
fn hex_reserve_suggestion(&self) -> usize;
// Provided methods
fn to_lower_hex_string(&self) -> String { ... }
fn to_upper_hex_string(&self) -> String { ... }
fn to_hex_string(&self, case: Case) -> String { ... }
fn append_hex_to_string<'a>(&'a self, case: Case, string: &mut String) { ... }
}Expand description
Extension trait for types that can be displayed as hex.
Types that have a single, obvious text representation being hex should not implement this
trait and simply implement Display instead.
Required Associated Types§
Required Methods§
Sourcefn as_hex<'a>(&'a self) -> Self::Display<'a>
fn as_hex<'a>(&'a self) -> Self::Display<'a>
Display Self as a continuous sequence of ASCII hex chars.
Sourcefn hex_reserve_suggestion(&self) -> usize
fn hex_reserve_suggestion(&self) -> usize
Hints how many bytes to reserve when creating a String.
If you don’t know you can just return 0 and take the perf hit.
Provided Methods§
Sourcefn to_lower_hex_string(&self) -> String
Available on crate feature alloc only.
fn to_lower_hex_string(&self) -> String
alloc only.Create a lower-hex-encoded string.
A shorthand for to_hex_string(Case::Lower), so that Case doesn’t need to be imported.
This may be faster than .display_hex().to_string() because it uses reserve_suggestion.
Examples found in repository?
12fn main() {
13 let hex = "deadbeefcafebabedeadbeefcafebabedeadbeefcafebabedeadbeefcafebabe";
14 println!("\nParse from hex: {}\n", hex);
15
16 let array = hex::decode_to_array::<32>(hex).expect("failed to parse array");
17 let wrap = Wrap::from_str(hex).expect("failed to parse wrapped array from hex string");
18
19 println!("Print an array using traits from the standard libraries `fmt` module along with the provided implementation of `DisplayHex`:\n");
20 println!("LowerHex: {:x}", array.as_hex());
21 println!("UpperHex: {:X}", array.as_hex());
22 println!("Display: {}", array.as_hex());
23 println!("Debug: {:?}", array.as_hex());
24 println!("Debug pretty: {:#?}", array.as_hex());
25
26 println!("\n");
27
28 println!(
29 "Print the wrapped array directly using traits from the standard libraries `fmt` module:\n"
30 );
31 println!("LowerHex: {:x}", wrap);
32 println!("UpperHex: {:X}", wrap);
33 println!("Display: {}", wrap);
34 println!("Debug: {:?}", wrap);
35 println!("Debug pretty: {:#?}", wrap);
36
37 #[cfg(feature = "alloc")]
38 {
39 let array_hex = array.to_lower_hex_string();
40 let other = array.as_hex().to_string();
41 assert_eq!(array_hex, other);
42
43 let wrap_hex = wrap.to_string();
44 assert_eq!(array_hex, wrap_hex);
45 }
46}Sourcefn to_upper_hex_string(&self) -> String
Available on crate feature alloc only.
fn to_upper_hex_string(&self) -> String
alloc only.Create an upper-hex-encoded string.
A shorthand for to_hex_string(Case::Upper), so that Case doesn’t need to be imported.
This may be faster than .display_hex().to_string() because it uses reserve_suggestion.
Sourcefn to_hex_string(&self, case: Case) -> String
Available on crate feature alloc only.
fn to_hex_string(&self, case: Case) -> String
alloc only.Create a hex-encoded string.
This may be faster than .display_hex().to_string() because it uses reserve_suggestion.
Sourcefn append_hex_to_string<'a>(&'a self, case: Case, string: &mut String)
Available on crate feature alloc only.
fn append_hex_to_string<'a>(&'a self, case: Case, string: &mut String)
alloc only.Appends hex-encoded content to an existing String.
This may be faster than write!(string, "{:x}", self.as_hex()) because it uses
hex_reserve_sugggestion.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.