facet_reflect/partial/partial_api/
shorthands.rs

1use super::*;
2
3////////////////////////////////////////////////////////////////////////////////////////////////////
4// Shorthands
5////////////////////////////////////////////////////////////////////////////////////////////////////
6impl<'facet, const BORROW: bool> Partial<'facet, BORROW> {
7    /// Convenience shortcut: sets the field at index `idx` directly to value, popping after.
8    ///
9    /// Works on structs, enums (after selecting a variant) and arrays.
10    pub fn set_nth_field<U>(self, idx: usize, value: U) -> Result<Self, ReflectError>
11    where
12        U: Facet<'facet>,
13    {
14        self.begin_nth_field(idx)?.set(value)?.end()
15    }
16
17    /// Convenience shortcut: sets the named field to value, popping after.
18    pub fn set_field<U>(self, field_name: &str, value: U) -> Result<Self, ReflectError>
19    where
20        U: Facet<'facet>,
21    {
22        self.begin_field(field_name)?.set(value)?.end()
23    }
24
25    /// Convenience shortcut: sets the key for a map key-value insertion, then pops after.
26    pub fn set_key<U>(self, value: U) -> Result<Self, ReflectError>
27    where
28        U: Facet<'facet>,
29    {
30        self.begin_key()?.set(value)?.end()
31    }
32
33    /// Convenience shortcut: sets the value for a map key-value insertion, then pops after.
34    pub fn set_value<U>(self, value: U) -> Result<Self, ReflectError>
35    where
36        U: Facet<'facet>,
37    {
38        self.begin_value()?.set(value)?.end()
39    }
40
41    /// Shorthand for: begin_list_item(), set(), end()
42    pub fn push<U>(self, value: U) -> Result<Self, ReflectError>
43    where
44        U: Facet<'facet>,
45    {
46        self.begin_list_item()?.set(value)?.end()
47    }
48
49    /// Shorthand for: begin_set_item(), set(), end()
50    pub fn insert<U>(self, value: U) -> Result<Self, ReflectError>
51    where
52        U: Facet<'facet>,
53    {
54        self.begin_set_item()?.set(value)?.end()
55    }
56}