pub struct JsonValueRef<'a> { /* private fields */ }Expand description
An immutable, borrowed view of a JSON value.
Constructing a view copies only a reference. Equality and debug formatting
use explicit work stacks, which may allocate. Serialization uses the same
stacker-backed recursive Serde bridge as
SafeJsonValue. The bridge can grow the stack for
library-side recursive calls, but the selected serializer may still impose
its own recursion limits; it does not promise an exact memory bound or
support unlimited depth. The view does not protect the borrowed tree’s
destruction when its owner is dropped.
§Examples
use qubit_json::value::{JsonValueRef, SafeJsonValue};
let owner = SafeJsonValue::new(serde_json::json!({"items": [1, 2]}));
let view = JsonValueRef::new(owner.as_value());
assert_eq!(
serde_json::to_vec(&view).unwrap(),
serde_json::to_vec(&owner).unwrap()
);The view cannot outlive its borrowed owner:
ⓘ
use qubit_json::value::{JsonValueRef, SafeJsonValue};
let view = {
let owner = SafeJsonValue::new(serde_json::json!([1]));
JsonValueRef::new(owner.as_value())
};
println!("{view:?}");Implementations§
Trait Implementations§
Source§impl<'a> Clone for JsonValueRef<'a>
impl<'a> Clone for JsonValueRef<'a>
impl<'a> Copy for JsonValueRef<'a>
Source§impl Debug for JsonValueRef<'_>
impl Debug for JsonValueRef<'_>
impl Eq for JsonValueRef<'_>
Source§impl<'a, 'b> PartialEq<JsonValueRef<'b>> for JsonValueRef<'a>
impl<'a, 'b> PartialEq<JsonValueRef<'b>> for JsonValueRef<'a>
Auto Trait Implementations§
impl<'a> Freeze for JsonValueRef<'a>
impl<'a> RefUnwindSafe for JsonValueRef<'a>
impl<'a> Send for JsonValueRef<'a>
impl<'a> Sync for JsonValueRef<'a>
impl<'a> Unpin for JsonValueRef<'a>
impl<'a> UnsafeUnpin for JsonValueRef<'a>
impl<'a> UnwindSafe for JsonValueRef<'a>
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