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.
rust
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...
rust
// receive `relative`
println!("{:?}", relative.to());
// prints "[2, 3, 5, 8]"
This currently requires Rust nightly.
Licensed under Apache License, Version 2.0, (LICENSE.txt or http://www.apache.org/licenses/LICENSE-2.0).
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.