# 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 `struct`s 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 `derive`d, 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 }
    }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() -> Kind { Kind::A }
    }Run

## Implementors

###

`impl Default for ()`

[src]

####

`fn default()`

[src]

Returns the default value of `()`

###

`impl Default for Error`

[src]

####

`fn default() -> Error`

[src]

###

`impl Default for SipHasher`

[src]

####

`fn default() -> SipHasher`

[src]

###

`impl Default for AtomicBool`

[src]

####

`fn default() -> Self`

[src]

Creates an `AtomicBool` initialized to `false`.

###

`impl Default for AtomicI16`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicI32`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicI64`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicI8`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicIsize`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicU16`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicU32`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicU64`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicU8`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for AtomicUsize`

[src]

####

`fn default() -> Self`

[src]

###

`impl Default for Duration`

[src]

####

`fn default() -> 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<'a> Default for &'a mut str`

[src]

####

`fn default() -> &'a mut str`

[src]

Creates an empty mutable str

###

`impl<'a> Default for &'a str`

[src]

####

`fn default() -> &'a str`

[src]

Creates an empty str

###

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

[src]

####

`fn default() -> &'a [T]`

[src]

Creates an empty slice.

###

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

[src]

####

`fn default() -> &'a mut [T]`

[src]

Creates a mutable empty slice.

###

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

[src]

####

`fn default() -> (A,)`

[src]

###

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

[src]

####

`fn default() -> (A, B)`

[src]

###

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

[src]

####

`fn default() -> (A, B, C)`

[src]

###

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

[src]

####

`fn default() -> (A, B, C, D)`

[src]

###

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

[src]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (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]

####

`fn default() -> (A, B, C, D, E, F, G, H, I, J, K, L)`

[src]

###

`impl<H> Default for BuildHasherDefault<H>`

[src]

####

`fn default() -> BuildHasherDefault<H>`

[src]

###

`impl<T> Default for Option<T>`

[src]

####

`fn default() -> Option<T>`

[src]

Returns `None`.

###

`impl<T> Default for Empty<T>`

[src]

####
ⓘImportant traits for Empty<T>

### Important traits for Empty<T>

`impl<T> Iterator for Empty<T> type Item = T;`

`fn default() -> 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]

####

`fn default() -> [T; 0]`

[src]

###

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

[src]

####

`fn default() -> [T; 1]`

[src]

###

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

[src]

####

`fn default() -> [T; 2]`

[src]

###

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

[src]

####

`fn default() -> [T; 3]`

[src]

###

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

[src]

####

`fn default() -> [T; 4]`

[src]

###

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

[src]

####

`fn default() -> [T; 5]`

[src]

###

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

[src]

####

`fn default() -> [T; 6]`

[src]

###

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

[src]

####

`fn default() -> [T; 7]`

[src]

###

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

[src]

####

`fn default() -> [T; 8]`

[src]

###

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

[src]

####

`fn default() -> [T; 9]`

[src]

###

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

[src]

####

`fn default() -> [T; 10]`

[src]

###

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

[src]

####

`fn default() -> [T; 11]`

[src]

###

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

[src]

####

`fn default() -> [T; 12]`

[src]

###

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

[src]

####

`fn default() -> [T; 13]`

[src]

###

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

[src]

####

`fn default() -> [T; 14]`

[src]

###

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

[src]

####

`fn default() -> [T; 15]`

[src]

###

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

[src]

####

`fn default() -> [T; 16]`

[src]

###

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

[src]

####

`fn default() -> [T; 17]`

[src]

###

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

[src]

####

`fn default() -> [T; 18]`

[src]

###

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

[src]

####

`fn default() -> [T; 19]`

[src]

###

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

[src]

####

`fn default() -> [T; 20]`

[src]

###

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

[src]

####

`fn default() -> [T; 21]`

[src]

###

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

[src]

####

`fn default() -> [T; 22]`

[src]

###

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

[src]

####

`fn default() -> [T; 23]`

[src]

###

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

[src]

####

`fn default() -> [T; 24]`

[src]

###

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

[src]

####

`fn default() -> [T; 25]`

[src]

###

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

[src]

####

`fn default() -> [T; 26]`

[src]

###

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

[src]

####

`fn default() -> [T; 27]`

[src]

###

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

[src]

####

`fn default() -> [T; 28]`

[src]

###

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

[src]

####

`fn default() -> [T; 29]`

[src]

###

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

[src]

####

`fn default() -> [T; 30]`

[src]

###

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

[src]

####

`fn default() -> [T; 31]`

[src]

###

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

[src]

####

`fn default() -> [T; 32]`

[src]

###

`impl<T: Default + ?Sized> Default for ManuallyDrop<T>`

[src]

####

`fn default() -> 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]

####

`fn default() -> Reverse<T>`

[src]

###

`impl<T: Default> Default for Wrapping<T>`

[src]

####

`fn default() -> Wrapping<T>`

[src]

###

`impl<T: ?Sized> Default for PhantomData<T>`

[src]

####

`fn default() -> PhantomData<T>`

[src]

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)