#[repr(transparent)]pub struct RcAnchor<T: ?Sized>(pub Rc<T>);Expand description
Serialization public API is defined at crate root
A wrapper around Rc<T> that opt-ins a field for anchor emission (e.g. serialization by reference).
This type behaves like a normal Rc<T> but signals that the value
should be treated as an anchorable reference — for instance,
when serializing graphs or shared structures where pointer identity matters.
§Examples
use std::rc::Rc;
use serde_saphyr::RcAnchor;
// Create from an existing Rc
let rc = Rc::new(String::from("Hello"));
let anchor1 = RcAnchor::from(rc.clone());
// Or directly from a value (Rc::new is called internally)
let anchor2: RcAnchor<String> = RcAnchor::from(Rc::new(String::from("World")));
assert_eq!(*anchor1.0, "Hello");
assert_eq!(*anchor2.0, "World");Tuple Fields§
§0: Rc<T>Trait Implementations§
Source§impl<'de, T> Deserialize<'de> for RcAnchor<T>where
T: Deserialize<'de> + 'static,
impl<'de, T> Deserialize<'de> for RcAnchor<T>where
T: Deserialize<'de> + 'static,
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl<T: ?Sized> Eq for RcAnchor<T>
Auto Trait Implementations§
impl<T> Freeze for RcAnchor<T>where
T: ?Sized,
impl<T> RefUnwindSafe for RcAnchor<T>where
T: RefUnwindSafe + ?Sized,
impl<T> !Send for RcAnchor<T>
impl<T> !Sync for RcAnchor<T>
impl<T> Unpin for RcAnchor<T>where
T: ?Sized,
impl<T> UnwindSafe for RcAnchor<T>where
T: RefUnwindSafe + ?Sized,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more