pub trait Pointer {
// Required method
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}Available on crate feature
std only.Expand description
p formatting.
The Pointer trait should format its output as a memory location. This is commonly presented
as hexadecimal.
For more information on formatters, see the module-level documentation.
§Examples
Basic usage with &i32:
let x = &42;
let address = format!("{x:p}"); // this produces something like '0x7f06092ac6d0'Implementing Pointer on a type:
use std::fmt;
struct Length(i32);
impl fmt::Pointer for Length {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// use `as` to convert to a `*const T`, which implements Pointer, which we can use
let ptr = self as *const Self;
fmt::Pointer::fmt(&ptr, f)
}
}
let l = Length(42);
println!("l is in memory here: {l:p}");
let l_ptr = format!("{l:018p}");
assert_eq!(l_ptr.len(), 18);
assert_eq!(&l_ptr[..2], "0x");Required Methods§
1.0.0 · sourcefn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Formats the value using the given formatter.
§Errors
This function should return Err if, and only if, the provided Formatter returns Err.
String formatting is considered an infallible operation; this function only
returns a Result because writing to the underlying stream might fail and it must
provide a way to propagate the fact that an error has occurred back up the stack.
Implementors§
impl<'s, T> Pointer for SliceVec<'s, T>where
T: Pointer,
impl<A> Pointer for TinyVec<A>
impl<A> Pointer for ArrayVec<A>
impl<F> Pointer for Fwhere
F: FnPtr,
impl<O> Pointer for RawRelPtr<O>where
O: Offset,
impl<Ptr> Pointer for Pin<Ptr>where
Ptr: Pointer,
impl<T> Pointer for *const Twhere
T: ?Sized,
impl<T> Pointer for *mut Twhere
T: ?Sized,
impl<T> Pointer for &Twhere
T: ?Sized,
impl<T> Pointer for &mut Twhere
T: ?Sized,
impl<T> Pointer for NonNull<T>where
T: ?Sized,
impl<T> Pointer for AtomicPtr<T>
Available on
target_has_atomic_load_store="ptr" only.