Skip to main content

from_slice_into_borrowed

Function from_slice_into_borrowed 

Source
pub fn from_slice_into_borrowed<'input, 'facet>(
    input: &'input [u8],
    partial: Partial<'facet, true>,
) -> Result<Partial<'facet, true>, DeserializeError>
where 'input: 'facet,
Expand description

Deserialize JSON from bytes into an existing Partial, allowing zero-copy borrowing.

This variant requires the input to outlive the Partial’s lifetime ('input: 'facet), enabling zero-copy deserialization of string fields as &str or Cow<str>.

This is useful for reflection-based deserialization where you don’t have a concrete type T at compile time, only its Shape metadata.

§Example

use facet::Facet;
use facet_json::from_slice_into_borrowed;
use facet_reflect::Partial;

#[derive(Facet, Debug, PartialEq)]
struct Point<'a> {
    label: &'a str,
    x: i32,
    y: i32,
}

let json = br#"{"label": "origin", "x": 0, "y": 0}"#;
let partial = Partial::alloc::<Point>().unwrap();
let partial = from_slice_into_borrowed(json, partial).unwrap();
let value = partial.build().unwrap();
let point: Point = value.materialize().unwrap();
assert_eq!(point.label, "origin");