Struct const_format::PWrapper [−][src]
pub struct PWrapper<T>(pub T);
fmt
only.Expand description
Wrapper for many std types,
which implements the const_debug_fmt
and/or const_display_fmt
methods for them.
The macros from this crate automatically wraps std types in this type,
so you only need to use it if you’re manually calling the const_*_fmt
methods.
Constructors
Most std types can be wrapped in this type simply by doing PWrapper(value)
.
To wrap arrays, there is the PWrapper::slice
constructor
for convenience.
Excluded std types
Note that this type does not implement the formatting methods for std types which wrap non-std types, only for a selection of wrapped std types.
You can use the call_debug_fmt
macro to format arrays/slices/Options of
any type that can be const debug formatted.
Example
This example demonstrates how you can implement debug formatting for a type using PWrapper to write std types.
#![feature(const_mut_refs)]
use const_format::{Error, Formatter, PWrapper};
use const_format::{impl_fmt, formatc, try_};
use core::num::NonZeroU32;
pub struct Divide(pub u32, pub u32);
impl_fmt!{
impl Divide;
pub const fn const_debug_fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
let Self(left, right) = *self;
let divided = self.0 / self.1;
let mut f = f.debug_struct("Divide");
try_!(PWrapper(self.0).const_debug_fmt(f.field("numerator")));
try_!(PWrapper(self.1).const_debug_fmt(f.field("denominator")));
try_!(PWrapper(divided).const_debug_fmt(f.field("divided")));
f.finish()
}
}
const TEXT: &str = formatc!("{:?}", Divide(34, 11));
const T_HEX: &str = formatc!("{:x?}", Divide(34, 11));
const T_BIN: &str = formatc!("{:b?}", Divide(34, 11));
assert_eq!(TEXT, "Divide { numerator: 34, denominator: 11, divided: 3 }");
assert_eq!(T_HEX, "Divide { numerator: 22, denominator: B, divided: 3 }");
assert_eq!(T_BIN, "Divide { numerator: 100010, denominator: 1011, divided: 11 }");
Tuple Fields
0: T
Implementations
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
This is supported on crate feature assertc
only.
assertc
only.This method is only available with the “assert” feature.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how long much space is necessary to write this integer as a literal.
Computes how long much space is necessary to write this integer as a literal.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Computes how long much space is necessary to write this integer as a literal.
Computes how long much space is necessary to write this integer as a literal.
Computes how long much space is necessary to write this integer as a hexadecimal literal.
Computes how long much space is necessary to write this integer as a binary literal.
Returns the absolute value of this integer.
Returns the absolute value of this integer, as the equivalent unsigned type.
Computes how much space is necessary to write the wrapped &[u8]
as a utf8 string,
with debug formatting
Computes how much space is necessary to write &self.0[range]
as a utf8 string,
with debug formatting
Trait Implementations
type Kind = IsNotStdKind
type Kind = IsNotStdKind
What kind of type this is, this can be one of: Read more