Trait Default

Source
pub trait Default: Default {
    // Required method
    fn is_default(self) -> bool;
}
Expand description

Extension of the standard Default trait.

This allows Creusot to specify the behavior of default.

§Derive macro

Similarly to std, Creusot defines a derive macro for Default:

use creusot_contracts::Default;

#[derive(Default)]
struct S(i32);

This will implement both Default traits, and generate a proof obligation to show that they agree.

Required Methods§

Source

fn is_default(self) -> bool

logic(prophetic)

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 Default for bool

Source§

fn is_default(self) -> bool

logic

pearlite! { self == false }

Source§

impl Default for char

Source§

fn is_default(self) -> bool

logic

pearlite! { self@ == 0 }

Source§

impl Default for i8

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for i16

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for i32

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for i64

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for i128

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for isize

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for u8

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for u16

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for u32

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for u64

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for u128

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

impl Default for ()

Source§

fn is_default(self) -> bool

logic

pearlite! { true }

Source§

impl Default for usize

Source§

fn is_default(self) -> bool

logic

pearlite! { self == $zero }

Source§

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

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default> Default for (A, B)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default> Default for (A, B, C)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default> Default for (A, B, C, D)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default> Default for (A, B, C, D, E)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default> Default for (A, B, C, D, E, F)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default> Default for (A, B, C, D, E, F, G)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default, H: Default> Default for (A, B, C, D, E, F, G, H)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default, H: Default, I: Default> Default for (A, B, C, D, E, F, G, H, I)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default, H: Default, I: Default, J: Default> Default for (A, B, C, D, E, F, G, H, I, J)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default, H: Default, I: Default, J: Default, K: Default> Default for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<A: Default, B: Default, C: Default, D: Default, E: Default, F: Default, G: Default, H: Default, I: Default, J: Default, K: Default, L: Default> Default for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { $(self.$idx.is_default())&&+ }

Source§

impl<T> Default for &[T]

Source§

fn is_default(self) -> bool

logic

pearlite! { self@ == Seq::EMPTY }

Source§

impl<T> Default for &mut [T]

Source§

fn is_default(self) -> bool

logic(prophetic)

pearlite! { self@ == Seq::EMPTY && (^self)@ == Seq::EMPTY }

Implementors§