On this page
Trait std::fmt::Pointer
pub trait Pointer {
// Required method
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}
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
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Formats the value using the given formatter.
Implementors
impl<F> Pointer for F
where
F: FnPtr,
impl<P> Pointer for Pin<P>
where
P: Pointer,
impl<T> Pointer for *const T
where
T: ?Sized,
impl<T> Pointer for *mut T
where
T: ?Sized,
impl<T> Pointer for &T
where
T: ?Sized,
impl<T> Pointer for &mut T
where
T: ?Sized,
impl<T> Pointer for NonNull<T>
where
T: ?Sized,
impl<T> Pointer for AtomicPtr<T>
impl<T, A> Pointer for Box<T, A>
where
A: Allocator,
T: ?Sized,
impl<T, A> Pointer for Rc<T, A>
where
A: Allocator,
T: ?Sized,
impl<T, A> Pointer for Arc<T, A>
where
A: Allocator,
T: ?Sized,
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/fmt/trait.Pointer.html