1.0.0[][src]Trait core::default::Default

pub trait Default: Sized {
    fn default() -> Self;
}

A trait for giving a type a useful default value.

Sometimes, you want to fall back to some kind of default value, and don't particularly care what it is. This comes up often with structs that define a set of options:

struct SomeOptions {
    foo: i32,
    bar: f32,
}Run

How can we define some default values? You can use Default:

#[derive(Default)]
struct SomeOptions {
    foo: i32,
    bar: f32,
}

fn main() {
    let options: SomeOptions = Default::default();
}Run

Now, you get all of the default values. Rust implements Default for various primitives types.

If you want to override a particular option, but still retain the other defaults:

fn main() {
    let options = SomeOptions { foo: 42, ..Default::default() };
}Run

Derivable

This trait can be used with #[derive] if all of the type's fields implement Default. When derived, it will use the default value for each field's type.

How can I implement Default?

Provides an implementation for the default() method that returns the value of your type that should be the default:

enum Kind {
    A,
    B,
    C,
}

impl Default for Kind {
    fn default() -> Self { Kind::A }
}Run

Examples

#[derive(Default)]
struct SomeOptions {
    foo: i32,
    bar: f32,
}Run

Required methods

fn default() -> Self

Returns the "default value" for a type.

Default values are often some kind of initial value, identity value, or anything else that may make sense as a default.

Examples

Using built-in default values:

let i: i8 = Default::default();
let (x, y): (Option<String>, f64) = Default::default();
let (a, b, (c, d)): (i32, u32, (bool, bool)) = Default::default();Run

Making your own:

enum Kind {
    A,
    B,
    C,
}

impl Default for Kind {
    fn default() -> Self { Kind::A }
}Run
Loading content...

Implementors

impl Default for ()[src]

fn default()[src]

Returns the default value of ()

impl Default for Error[src]

impl Default for SipHasher[src]

impl Default for AtomicBool[src]

fn default() -> Self[src]

Creates an AtomicBool initialized to false.

impl Default for AtomicI16[src]

impl Default for AtomicI32[src]

impl Default for AtomicI64[src]

impl Default for AtomicI8[src]

impl Default for AtomicIsize[src]

impl Default for AtomicU16[src]

impl Default for AtomicU32[src]

impl Default for AtomicU64[src]

impl Default for AtomicU8[src]

impl Default for AtomicUsize[src]

impl Default for Duration[src]

impl Default for bool[src]

fn default() -> bool[src]

Returns the default value of false

impl Default for char[src]

fn default() -> char[src]

Returns the default value of \x00

impl Default for f32[src]

fn default() -> f32[src]

Returns the default value of 0.0

impl Default for f64[src]

fn default() -> f64[src]

Returns the default value of 0.0

impl Default for i8[src]

fn default() -> i8[src]

Returns the default value of 0

impl Default for i16[src]

fn default() -> i16[src]

Returns the default value of 0

impl Default for i32[src]

fn default() -> i32[src]

Returns the default value of 0

impl Default for i64[src]

fn default() -> i64[src]

Returns the default value of 0

impl Default for i128[src]

fn default() -> i128[src]

Returns the default value of 0

impl Default for isize[src]

fn default() -> isize[src]

Returns the default value of 0

impl Default for u8[src]

fn default() -> u8[src]

Returns the default value of 0

impl Default for u16[src]

fn default() -> u16[src]

Returns the default value of 0

impl Default for u32[src]

fn default() -> u32[src]

Returns the default value of 0

impl Default for u64[src]

fn default() -> u64[src]

Returns the default value of 0

impl Default for u128[src]

fn default() -> u128[src]

Returns the default value of 0

impl Default for usize[src]

fn default() -> usize[src]

Returns the default value of 0

impl<'_> Default for &'_ mut str[src]

fn default() -> Self[src]

Creates an empty mutable str

impl<'_> Default for &'_ str[src]

fn default() -> Self[src]

Creates an empty str

impl<'_, T> Default for &'_ [T][src]

fn default() -> Self[src]

Creates an empty slice.

impl<'_, T> Default for &'_ mut [T][src]

fn default() -> Self[src]

Creates a mutable empty slice.

impl<A: Default> Default for (A,)[src]

impl<A: Default, B: Default> Default for (A, B)[src]

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

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

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

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

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

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)[src]

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)[src]

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)[src]

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)[src]

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)[src]

impl<H> Default for BuildHasherDefault<H>[src]

impl<T> Default for Option<T>[src]

fn default() -> Option<T>[src]

Returns None.

Examples

let opt: Option<u32> = Option::default();
assert!(opt.is_none());Run

impl<T> Default for Empty<T>[src]

impl<T> Default for AtomicPtr<T>[src]

fn default() -> AtomicPtr<T>[src]

Creates a null AtomicPtr<T>.

impl<T> Default for [T; 0][src]

impl<T> Default for [T; 1] where
    T: Default
[src]

impl<T> Default for [T; 2] where
    T: Default
[src]

impl<T> Default for [T; 3] where
    T: Default
[src]

impl<T> Default for [T; 4] where
    T: Default
[src]

impl<T> Default for [T; 5] where
    T: Default
[src]

impl<T> Default for [T; 6] where
    T: Default
[src]

impl<T> Default for [T; 7] where
    T: Default
[src]

impl<T> Default for [T; 8] where
    T: Default
[src]

impl<T> Default for [T; 9] where
    T: Default
[src]

impl<T> Default for [T; 10] where
    T: Default
[src]

impl<T> Default for [T; 11] where
    T: Default
[src]

impl<T> Default for [T; 12] where
    T: Default
[src]

impl<T> Default for [T; 13] where
    T: Default
[src]

impl<T> Default for [T; 14] where
    T: Default
[src]

impl<T> Default for [T; 15] where
    T: Default
[src]

impl<T> Default for [T; 16] where
    T: Default
[src]

impl<T> Default for [T; 17] where
    T: Default
[src]

impl<T> Default for [T; 18] where
    T: Default
[src]

impl<T> Default for [T; 19] where
    T: Default
[src]

impl<T> Default for [T; 20] where
    T: Default
[src]

impl<T> Default for [T; 21] where
    T: Default
[src]

impl<T> Default for [T; 22] where
    T: Default
[src]

impl<T> Default for [T; 23] where
    T: Default
[src]

impl<T> Default for [T; 24] where
    T: Default
[src]

impl<T> Default for [T; 25] where
    T: Default
[src]

impl<T> Default for [T; 26] where
    T: Default
[src]

impl<T> Default for [T; 27] where
    T: Default
[src]

impl<T> Default for [T; 28] where
    T: Default
[src]

impl<T> Default for [T; 29] where
    T: Default
[src]

impl<T> Default for [T; 30] where
    T: Default
[src]

impl<T> Default for [T; 31] where
    T: Default
[src]

impl<T> Default for [T; 32] where
    T: Default
[src]

impl<T: Default + ?Sized> Default for ManuallyDrop<T>[src]

impl<T: Default> Default for Cell<T>[src]

fn default() -> Cell<T>[src]

Creates a Cell<T>, with the Default value for T.

impl<T: Default> Default for RefCell<T>[src]

fn default() -> RefCell<T>[src]

Creates a RefCell<T>, with the Default value for T.

impl<T: Default> Default for UnsafeCell<T>[src]

fn default() -> UnsafeCell<T>[src]

Creates an UnsafeCell, with the Default value for T.

impl<T: Default> Default for Reverse<T>[src]

impl<T: Default> Default for Wrapping<T>[src]

impl<T: ?Sized> Default for PhantomData<T>[src]

Loading content...