W3cubDocs

/Rust

Trait std::default::Default

pub trait Default {
    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,
}

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();
}

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() };
}

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?

Provide 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() -> Kind { Kind::A }
}

Examples

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

Required Methods

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();

Making your own:

enum Kind {
    A,
    B,
    C,
}

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

Implementors

impl Default for bool [src]

Returns the default value of false

impl Default for char [src]

Returns the default value of \x00

impl Default for f32 [src]

Returns the default value of 0.0

impl Default for f64 [src]

Returns the default value of 0.0

impl Default for i128 [src]

Returns the default value of 0

impl Default for i16 [src]

Returns the default value of 0

impl Default for i32 [src]

Returns the default value of 0

impl Default for i64 [src]

Returns the default value of 0

impl Default for i8 [src]

Returns the default value of 0

impl Default for isize [src]

Returns the default value of 0

impl Default for u128 [src]

Returns the default value of 0

impl Default for u16 [src]

Returns the default value of 0

impl Default for u32 [src]

Returns the default value of 0

impl Default for u64 [src]

Returns the default value of 0

impl Default for u8 [src]

Returns the default value of 0

impl Default for () [src]

Returns the default value of ()

impl Default for usize [src]

Returns the default value of 0

impl Default for Global [src]

impl Default for Box<str> [src]

ⓘImportant traits for Box<I>
impl<I> Iterator for Box<I> where
    I: Iterator + ?Sized, 
    type Item = <I as Iterator>::Item;
impl<R: Read + ?Sized> Read for Box<R>
impl<W: Write + ?Sized> Write for Box<W>

impl Default for Box<CStr> [src]

ⓘImportant traits for Box<I>
impl<I> Iterator for Box<I> where
    I: Iterator + ?Sized, 
    type Item = <I as Iterator>::Item;
impl<R: Read + ?Sized> Read for Box<R>
impl<W: Write + ?Sized> Write for Box<W>

impl Default for Box<OsStr> [src]

ⓘImportant traits for Box<I>
impl<I> Iterator for Box<I> where
    I: Iterator + ?Sized, 
    type Item = <I as Iterator>::Item;
impl<R: Read + ?Sized> Read for Box<R>
impl<W: Write + ?Sized> Write for Box<W>

impl Default for DefaultHasher [src]

Creates a new DefaultHasher using new. See its documentation for more.

impl Default for RandomState [src]

Constructs a new RandomState.

impl Default for CString [src]

Creates an empty CString.

impl Default for OsString [src]

Constructs an empty OsString.

impl Default for Error [src]

impl Default for SipHasher [src]

impl Default for PathBuf [src]

impl Default for String [src]

Creates an empty String.

impl Default for AtomicBool [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 Condvar [src]

Creates a Condvar which is ready to be waited on and notified.

impl Default for Duration [src]

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

Creates an empty str

impl<'a> Default for &'a CStr [src]

impl<'a> Default for &'a OsStr [src]

Creates an empty OsStr.

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

Creates an empty mutable str

impl<'a, B> Default for Cow<'a, B> where
    B: ToOwned + ?Sized,
    <B as ToOwned>::Owned: Default
[src]

Creates an owned Cow<'a, B> with the default value for the contained owned value.

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

ⓘImportant traits for &'a [u8]
impl<'a> Read for &'a [u8]
impl<'a> Write for &'a mut [u8]

Creates an empty slice.

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

ⓘImportant traits for &'a [u8]
impl<'a> Read for &'a [u8]
impl<'a> Write for &'a mut [u8]

Creates a mutable empty slice.

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<K, V> Default for BTreeMap<K, V> where
    K: Ord
[src]

Creates an empty BTreeMap<K, V>.

impl<K, V, S> Default for HashMap<K, V, S> where
    K: Eq + Hash,
    S: BuildHasher + Default
[src]

Creates an empty HashMap<K, V, S>, with the Default value for the hasher.

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

Returns None.

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 for Box<[T]> [src]

ⓘImportant traits for Box<I>
impl<I> Iterator for Box<I> where
    I: Iterator + ?Sized, 
    type Item = <I as Iterator>::Item;
impl<R: Read + ?Sized> Read for Box<R>
impl<W: Write + ?Sized> Write for Box<W>

impl<T> Default for Box<T> where
    T: Default
[src]

ⓘImportant traits for Box<I>
impl<I> Iterator for Box<I> where
    I: Iterator + ?Sized, 
    type Item = <I as Iterator>::Item;
impl<R: Read + ?Sized> Read for Box<R>
impl<W: Write + ?Sized> Write for Box<W>

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

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

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

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

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

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

Creates an UnsafeCell, with the Default value for T.

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

impl<T> Default for BinaryHeap<T> where
    T: Ord
[src]

Creates an empty BinaryHeap<T>.

impl<T> Default for BTreeSet<T> where
    T: Ord
[src]

Makes an empty BTreeSet<T> with a reasonable choice of B.

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

Creates an empty LinkedList<T>.

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

Creates an empty VecDeque<T>.

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

ⓘImportant traits for Empty<T>
impl<T> Iterator for Empty<T>
    type Item = T;

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

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

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

impl<T> Default for Rc<T> where
    T: Default
[src]

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

Examples

use std::rc::Rc;

let x: Rc<i32> = Default::default();
assert_eq!(*x, 0);

impl<T> Default for std::rc::Weak<T> [src]

Constructs a new Weak<T>, allocating memory for T without initializing it. Calling [upgrade][Weak::upgrade] on the return value always gives None.

Examples

use std::rc::Weak;

let empty: Weak<i64> = Default::default();
assert!(empty.upgrade().is_none());

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

Creates a null AtomicPtr<T>.

impl<T> Default for Arc<T> where
    T: Default
[src]

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

Examples

use std::sync::Arc;

let x: Arc<i32> = Default::default();
assert_eq!(*x, 0);

impl<T> Default for std::sync::Weak<T> [src]

Constructs a new Weak<T>, without allocating memory. Calling [upgrade][Weak::upgrade] on the return value always gives None.

Examples

use std::sync::Weak;

let empty: Weak<i64> = Default::default();
assert!(empty.upgrade().is_none());

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

ⓘImportant traits for Vec<u8>
impl Write for Vec<u8>

Creates an empty Vec<T>.

impl<T, S> Default for HashSet<T, S> where
    T: Eq + Hash,
    S: BuildHasher + Default
[src]

Creates an empty HashSet<T, S> with the Default value for the hasher.

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

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

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

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

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/default/trait.Default.html