Crate relative[−][src]
A type to wrap &'static
references such that they can be safely sent
between other processes running the same binary.
References are adjusted relative to a base when (de)serialised, which accounts for binaries being dynamically loaded at different addresses under multiple invocations.
It being the same binary is checked by serialising the
build_id
alongside the relative pointer, which
is validated at deserialisation.
Example
Local process
let x: &'static [u16;4] = &[2,3,5,8]; // unsafe as it's up to the user to ensure the reference is into static memory let relative = unsafe{Pointer::from(x)}; // send `relative` to remote...
Remote process
// receive `relative` println!("{:?}", relative.to()); // prints "[2, 3, 5, 8]"
Note
This currently requires Rust nightly.
Structs
Code |
For references into the code segment |
Data |
For references into the data and BSS segments |
Pointer |
Wraps |
Traits
Static |
Implemented on all |