pub trait Pointer:
Sized
+ Copy
+ Hash
+ Eq
+ Debug
+ Sealed {
// Required methods
fn new(value: usize) -> Option<Self>;
fn get(self) -> usize;
}Expand description
A pointer type that is derived from the pointer Width.
Required Methods§
Sourcefn new(value: usize) -> Option<Self>
fn new(value: usize) -> Option<Self>
Safe constructor for the pointer.
Returns None if the value provided is out of bounds for the pointer type.
§Examples
use syntree::pointer::{Pointer, PointerU32};
let v = PointerU32::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU32::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);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.
Implementors§
impl Pointer for PointerU8
Pointer used for u8 type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerU8;
let v = PointerU8::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU8::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);impl Pointer for PointerU16
Pointer used for u16 type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerU16;
let v = PointerU16::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU16::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);impl Pointer for PointerU32
Pointer used for u32 type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerU32;
let v = PointerU32::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU32::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);impl Pointer for PointerU64
Pointer used for u64 type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerU64;
let v = PointerU64::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU64::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);impl Pointer for PointerU128
Pointer used for u128 type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerU128;
let v = PointerU128::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerU128::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);impl Pointer for PointerUsize
Pointer used for usize type.
use syntree::pointer::Pointer;
use syntree::pointer::PointerUsize;
let v = PointerUsize::new(0).ok_or("out of bounds")?;
assert_eq!(v.get(), 0);
let v = PointerUsize::new(42).ok_or("out of bounds")?;
assert_eq!(v.get(), 42);