Trait std::fmt::Pointer1.0.0[][src]

pub trait Pointer {
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}
Expand description

p formatting.

Pointer trait 应该将其输出格式化为存储位置。 通常以十六进制表示。

有关格式化程序的更多信息,请参见 the module-level documentation

Examples

&i32 的基本用法:

let x = &42;

let address = format!("{:p}", x); // 这会产生类似 '0x7f06092ac6d0' 的东西
Run

在类型上实现 Pointer:

use std::fmt;

struct Length(i32);

impl fmt::Pointer for Length {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        // 使用 `as` 转换为 `*const T`,该 `* const T` 实现了 Pointer,我们可以使用它

        let ptr = self as *const Self;
        fmt::Pointer::fmt(&ptr, f)
    }
}

let l = Length(42);

println!("l is in memory here: {:p}", l);

let l_ptr = format!("{:018p}", l);
assert_eq!(l_ptr.len(), 18);
assert_eq!(&l_ptr[..2], "0x");
Run

Required methods

使用给定的格式化程序格式化该值。

Implementors