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 is what enables it to work across binaries that are 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{Data::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

Wraps function pointers such that they can be safely sent between other processes running the same binary.

Data

Wraps &'static references such that they can be safely sent between other processes running the same binary.

Vtable

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