# 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() -> 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]

####

`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<'_> 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<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 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<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]

Loading content...

# 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`)