Skip to main content

ForyDefault

Trait ForyDefault 

Source
pub trait ForyDefault: Sized {
    // Required method
    fn fory_default() -> Self;
}
Expand description

Trait for creating default values during Fory deserialization.

ForyDefault is similar to Rust’s standard Default trait but specifically designed for Fory’s serialization framework. It provides a way to create “null” or default values when deserializing optional or nullable types.

§Why not use Default?

We can’t add a blanket implementation impl<T: Default> ForyDefault for T because it would conflict with potential future implementations in upstream crates. For example, the standard library might add impl Default for Rc<dyn Any> in the future, which would cause a trait coherence conflict.

§When to implement

You should implement ForyDefault when:

  • Creating custom types that can be serialized with Fory
  • Your type needs to support nullable/optional representations
  • You want to define what the “null” or “default” value means for deserialization

§Examples

use fory_core::ForyDefault;

#[derive(Debug, PartialEq)]
struct Point {
    x: i32,
    y: i32,
}

impl ForyDefault for Point {
    fn fory_default() -> Self {
        Point { x: 0, y: 0 }
    }
}

let default_point = Point::fory_default();
assert_eq!(default_point, Point { x: 0, y: 0 });

For types that already implement Default, you can simply delegate:

use fory_core::ForyDefault;

#[derive(Default)]
struct Config {
    timeout: u32,
    retries: u32,
}

impl ForyDefault for Config {
    fn fory_default() -> Self {
        Default::default()
    }
}

Required Methods§

Source

fn fory_default() -> Self

Creates a default value for this type.

This is used by Fory when deserializing null values or when a default instance is needed during the deserialization process.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl ForyDefault for bool

Source§

impl ForyDefault for f32

Source§

impl ForyDefault for f64

Source§

impl ForyDefault for i8

Source§

impl ForyDefault for i16

Source§

impl ForyDefault for i32

Source§

impl ForyDefault for i64

Source§

impl ForyDefault for i128

Source§

impl ForyDefault for isize

Source§

impl ForyDefault for u8

Source§

impl ForyDefault for u16

Source§

impl ForyDefault for u32

Source§

impl ForyDefault for u64

Source§

impl ForyDefault for u128

Source§

impl ForyDefault for ()

Source§

impl ForyDefault for usize

Source§

impl ForyDefault for Box<dyn Any>

Source§

impl ForyDefault for Box<dyn Serializer>

Source§

impl ForyDefault for Rc<dyn Any>

Source§

impl ForyDefault for String

Source§

impl ForyDefault for Arc<dyn Any>

Source§

impl ForyDefault for Duration

Source§

impl ForyDefault for NaiveDate

Source§

impl ForyDefault for NaiveDateTime

Source§

impl<K, V> ForyDefault for BTreeMap<K, V>

Source§

impl<K, V> ForyDefault for HashMap<K, V>

Source§

impl<T0: ForyDefault> ForyDefault for (T0,)

Source§

impl<T0: ForyDefault, T1: ForyDefault> ForyDefault for (T0, T1)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault> ForyDefault for (T0, T1, T2)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault> ForyDefault for (T0, T1, T2, T3)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault, T17: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault, T17: ForyDefault, T18: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault, T17: ForyDefault, T18: ForyDefault, T19: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault, T17: ForyDefault, T18: ForyDefault, T19: ForyDefault, T20: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)

Source§

impl<T0: ForyDefault, T1: ForyDefault, T2: ForyDefault, T3: ForyDefault, T4: ForyDefault, T5: ForyDefault, T6: ForyDefault, T7: ForyDefault, T8: ForyDefault, T9: ForyDefault, T10: ForyDefault, T11: ForyDefault, T12: ForyDefault, T13: ForyDefault, T14: ForyDefault, T15: ForyDefault, T16: ForyDefault, T17: ForyDefault, T18: ForyDefault, T19: ForyDefault, T20: ForyDefault, T21: ForyDefault> ForyDefault for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)

Source§

impl<T> ForyDefault for BTreeSet<T>

Source§

impl<T> ForyDefault for LinkedList<T>

Source§

impl<T> ForyDefault for VecDeque<T>

Source§

impl<T> ForyDefault for Vec<T>

Source§

impl<T> ForyDefault for HashSet<T>

Source§

impl<T, const N: usize> ForyDefault for [T; N]
where T: ForyDefault,

Source§

impl<T: 'static> ForyDefault for PhantomData<T>

Source§

impl<T: Ord> ForyDefault for BinaryHeap<T>

Source§

impl<T: ForyDefault> ForyDefault for Option<T>

Source§

impl<T: ForyDefault> ForyDefault for Box<T>

Source§

impl<T: ForyDefault> ForyDefault for Rc<T>

Source§

impl<T: ForyDefault> ForyDefault for Arc<T>

Source§

impl<T: ForyDefault> ForyDefault for RefCell<T>

Source§

impl<T: ForyDefault> ForyDefault for Mutex<T>

Implementors§