Crate relative[][src]

A type to wrap &'static references such that they can be safely sent between other processes running the same binary.

Crates.ioRepo

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 &'static references such that they can be safely sent between other processes running the same binary.

Traits

Static

Implemented on all T: Sized + 'static, this provides the base memory address that &'static T references are (de)serialised relative to.