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);