Skip to main content

Default

Trait Default 

Source
pub trait Default { }
Expand description

Default semantics accepted by the arcis interpreter.

§Implementing

Unlike most traits accepted by the interpreter, Default is both derivable and manually implementable inside #[encrypted] code. Both

#[derive(Default)]
struct Foo { x: u32, y: bool }

and a hand-written

impl Default for Foo {
    fn default() -> Self { Foo { x: 7, y: true } }
}

are accepted. For enums, the variant the derive picks is the one marked with #[default].

§Calling

Inside #[encrypted] code, the supported forms are:

  • T::default().
  • <T as Default>::default().

The unqualified trait form Default::default() is not accepted: the interpreter does not perform return-type type inference, so it cannot figure out which T you mean.

§Implementors

The impl list below shows the types the interpreter recognizes as having a Default. User types with #[derive(Default)] or a hand-written impl Default for ... are accepted at use sites but do not appear in this list (their impls live in user code, not in arcis).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Default for ()

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<T1: Default, T2: Default, T3: Default> Default for (T1, T2, T3)

Source§

impl<T1: Default, T2: Default> Default for (T1, T2)

Source§

impl<T1: Default> Default for (T1,)

Source§

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

Source§

impl<T> Default for &[T]

Source§

impl<T> Default for &mut [T]

Implementors§