1.0.0[−][src]Trait alloc::prelude::v1::Default
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() -> Self { Kind::A } }
Examples
#[derive(Default)] struct SomeOptions { foo: i32, bar: f32, }
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();
Making your own:
enum Kind { A, B, C, } impl Default for Kind { fn default() -> Self { Kind::A } }
Implementations on Foreign Types
impl Default for CString[src]
impl Default for CStringimpl<'a> Default for &'a OsStr[src]
impl<'a> Default for &'a OsStrimpl Default for Box<OsStr>[src]
impl Default for Box<OsStr>impl<T, S> Default for HashSet<T, S> where
S: BuildHasher + Default,
T: Eq + Hash, [src]
impl<T, S> Default for HashSet<T, S> where
S: BuildHasher + Default,
T: Eq + Hash, fn default() -> HashSet<T, S> | [src] |
Creates an empty HashSet<T, S> with the Default value for the hasher.
impl<K, V, S> Default for HashMap<K, V, S> where
K: Eq + Hash,
S: BuildHasher + Default, [src]
impl<K, V, S> Default for HashMap<K, V, S> where
K: Eq + Hash,
S: BuildHasher + Default, fn default() -> HashMap<K, V, S> | [src] |
Creates an empty HashMap<K, V, S>, with the Default value for the hasher.
impl Default for PathBuf[src]
impl Default for PathBufimpl Default for DefaultHasher[src]
impl Default for DefaultHasherfn default() -> DefaultHasher | [src] |
Creates a new DefaultHasher using [new][DefaultHasher::new].
See its documentation for more.
impl Default for Box<CStr>[src]
impl Default for Box<CStr>impl Default for RandomState[src]
impl Default for RandomStatefn default() -> RandomState | [src] |
Constructs a new RandomState.
impl Default for Condvar[src]
impl Default for Condvarimpl<'a> Default for &'a CStr[src]
impl<'a> Default for &'a CStrimpl<T> Default for RwLock<T> where
T: Default, [src]
impl<T> Default for RwLock<T> where
T: Default, impl Default for OsString[src]
impl Default for OsStringimpl<T> Default for Mutex<T> where
T: Default + ?Sized, [src]
impl<T> Default for Mutex<T> where
T: Default + ?Sized, impl<T> Default for [T; 19] where
T: Default, [src]
impl<T> Default for [T; 19] where
T: Default, impl<A, B> Default for (A, B) where
A: Default,
B: Default, [src]
impl<A, B> Default for (A, B) where
A: Default,
B: Default, impl Default for u8[src]
impl Default for u8impl Default for i128[src]
impl Default for i128impl<T> Default for [T; 2] where
T: Default, [src]
impl<T> Default for [T; 2] where
T: Default, 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> Default for (A, B, C, D, E, F) where
A: Default,
B: Default,
C: Default,
D: Default,
E: Default,
F: Default, impl Default for u64[src]
impl Default for u64impl<T> Default for [T; 23] where
T: Default, [src]
impl<T> Default for [T; 23] where
T: Default, impl<T> Default for [T; 6] where
T: Default, [src]
impl<T> Default for [T; 6] where
T: Default, impl<T> Default for [T; 31] where
T: Default, [src]
impl<T> Default for [T; 31] where
T: Default, 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> Default for (A, B, C, D, E, F, G) where
A: Default,
B: Default,
C: Default,
D: Default,
E: Default,
F: Default,
G: Default, impl<T> Default for [T; 29] where
T: Default, [src]
impl<T> Default for [T; 29] where
T: Default, impl<T> Default for [T; 11] where
T: Default, [src]
impl<T> Default for [T; 11] where
T: Default, 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> 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, impl<T> Default for [T; 21] where
T: Default, [src]
impl<T> Default for [T; 21] where
T: Default, impl Default for bool[src]
impl Default for boolimpl<T> Default for [T; 28] where
T: Default, [src]
impl<T> Default for [T; 28] where
T: Default, impl Default for ()[src]
impl Default for ()impl Default for f64[src]
impl Default for f64impl<T> Default for [T; 30] where
T: Default, [src]
impl<T> Default for [T; 30] where
T: Default, impl<'_> Default for &'_ str[src]
impl<'_> Default for &'_ strimpl<A> Default for (A,) where
A: Default, [src]
impl<A> Default for (A,) where
A: Default, impl<T> Default for [T; 32] where
T: Default, [src]
impl<T> Default for [T; 32] where
T: Default, impl<T> Default for [T; 22] where
T: Default, [src]
impl<T> Default for [T; 22] where
T: Default, impl Default for i8[src]
impl Default for i8impl Default for u128[src]
impl Default for u128impl<T> Default for [T; 8] where
T: Default, [src]
impl<T> Default for [T; 8] where
T: Default, impl<T> Default for [T; 3] where
T: Default, [src]
impl<T> Default for [T; 3] where
T: Default, 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> Default for (A, B, C, D) where
A: Default,
B: Default,
C: Default,
D: Default, 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> Default for (A, B, C, D, E) where
A: Default,
B: Default,
C: Default,
D: Default,
E: Default, 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<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, impl<T> Default for [T; 27] where
T: Default, [src]
impl<T> Default for [T; 27] where
T: Default, impl<T> Default for [T; 26] where
T: Default, [src]
impl<T> Default for [T; 26] where
T: Default, impl Default for i64[src]
impl Default for i64impl<T> Default for [T; 9] where
T: Default, [src]
impl<T> Default for [T; 9] where
T: Default, impl<T> Default for [T; 16] where
T: Default, [src]
impl<T> Default for [T; 16] where
T: Default, impl Default for i32[src]
impl Default for i32impl<T> Default for [T; 4] where
T: Default, [src]
impl<T> Default for [T; 4] where
T: Default, impl<T> Default for [T; 18] where
T: Default, [src]
impl<T> Default for [T; 18] where
T: Default, impl<T> Default for [T; 14] where
T: Default, [src]
impl<T> Default for [T; 14] where
T: Default, impl<'_> Default for &'_ mut str[src]
impl<'_> Default for &'_ mut strimpl Default for i16[src]
impl Default for i16impl<T> Default for [T; 1] where
T: Default, [src]
impl<T> Default for [T; 1] where
T: Default, 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> 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, impl Default for u32[src]
impl Default for u32impl<T> Default for [T; 10] where
T: Default, [src]
impl<T> Default for [T; 10] where
T: Default, impl<T> Default for [T; 17] where
T: Default, [src]
impl<T> Default for [T; 17] where
T: Default, impl<'_, T> Default for &'_ [T][src]
impl<'_, T> Default for &'_ [T]impl<T> Default for [T; 0][src]
impl<T> Default for [T; 0]impl Default for u16[src]
impl Default for u16impl Default for usize[src]
impl Default for usizeimpl<T> Default for [T; 5] where
T: Default, [src]
impl<T> Default for [T; 5] where
T: Default, impl Default for char[src]
impl Default for charimpl Default for f32[src]
impl Default for f32impl<A, B, C> Default for (A, B, C) where
A: Default,
B: Default,
C: Default, [src]
impl<A, B, C> Default for (A, B, C) where
A: Default,
B: Default,
C: Default, impl<T> Default for [T; 15] where
T: Default, [src]
impl<T> Default for [T; 15] where
T: Default, impl Default for isize[src]
impl Default for isizeimpl<T> Default for [T; 7] where
T: Default, [src]
impl<T> Default for [T; 7] where
T: Default, impl<T> Default for [T; 12] where
T: Default, [src]
impl<T> Default for [T; 12] where
T: Default, 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> 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, impl<'_, T> Default for &'_ mut [T][src]
impl<'_, T> Default for &'_ mut [T]fn default() -> &'_ mut [T] | [src] |
Creates a mutable empty slice.
impl<T> Default for [T; 24] where
T: Default, [src]
impl<T> Default for [T; 24] where
T: Default, 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> 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, impl<T> Default for [T; 13] where
T: Default, [src]
impl<T> Default for [T; 13] where
T: Default, impl<T> Default for [T; 25] where
T: Default, [src]
impl<T> Default for [T; 25] where
T: Default, impl<T> Default for [T; 20] where
T: Default, [src]
impl<T> Default for [T; 20] where
T: Default, impl<T> Default for Rc<T> where
T: Default, [src]
impl<T> Default for Rc<T> where
T: Default, fn default() -> Rc<T> | [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 Vec<T>[src]
impl<T> Default for Vec<T>impl Default for Box<str>[src]
impl Default for Box<str>impl<'a, B> Default for Cow<'a, B> where
B: ToOwned + ?Sized,
<B as ToOwned>::Owned: Default, [src]
impl<'a, B> Default for Cow<'a, B> where
B: ToOwned + ?Sized,
<B as ToOwned>::Owned: Default, fn default() -> Cow<'a, B> | [src] |
Creates an owned Cow<'a, B> with the default value for the contained owned value.
impl<T> Default for Box<T> where
T: Default, [src]
impl<T> Default for Box<T> where
T: Default, ⓘImportant traits for Box<I>
fn default() -> Box<T> | [src] |
Creates a Box<T>, with the Default value for T.
impl Default for Global[src]
impl Default for Globalimpl Default for String[src]
impl Default for Stringimpl<T> Default for Box<[T]>[src]
impl<T> Default for Box<[T]>impl<T> Default for LinkedList<T>[src]
impl<T> Default for LinkedList<T>fn default() -> LinkedList<T> | [src] |
Creates an empty LinkedList<T>.
impl<T> Default for BinaryHeap<T> where
T: Ord, [src]
impl<T> Default for BinaryHeap<T> where
T: Ord, fn default() -> BinaryHeap<T> | [src] |
Creates an empty BinaryHeap<T>.
impl<T> Default for Weak<T>[src]
impl<T> Default for Weak<T>impl<T> Default for BTreeSet<T> where
T: Ord, [src]
impl<T> Default for BTreeSet<T> where
T: Ord, impl<T> Default for VecDeque<T>[src]
impl<T> Default for VecDeque<T>impl<T> Default for Arc<T> where
T: Default, [src]
impl<T> Default for Arc<T> where
T: Default, fn default() -> Arc<T> | [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<K, V> Default for BTreeMap<K, V> where
K: Ord, [src]
impl<K, V> Default for BTreeMap<K, V> where
K: Ord, impl<T> Default for Weak<T>[src]
Loading content...
impl<T> Default for Weak<T>Implementors
impl Default for AtomicUsize[src]
impl Default for AtomicUsizefn default() -> AtomicUsize | [src] |
impl Default for SipHasher[src]
impl Default for SipHasherimpl Default for AtomicIsize[src]
impl Default for AtomicIsizefn default() -> AtomicIsize | [src] |
impl Default for AtomicBool[src]
impl Default for AtomicBoolfn default() -> AtomicBool | [src] |
Creates an AtomicBool initialized to false.
impl Default for Duration[src]
impl Default for Durationimpl Default for Error[src]
impl Default for Errorimpl Default for AtomicI16[src]
impl Default for AtomicI16impl Default for AtomicI32[src]
impl Default for AtomicI32impl Default for AtomicI64[src]
impl Default for AtomicI64impl Default for AtomicI8[src]
impl Default for AtomicI8impl Default for AtomicU16[src]
impl Default for AtomicU16impl Default for AtomicU32[src]
impl Default for AtomicU32impl Default for AtomicU64[src]
impl Default for AtomicU64impl Default for AtomicU8[src]
impl Default for AtomicU8impl<H> Default for BuildHasherDefault<H>[src]
impl<H> Default for BuildHasherDefault<H>fn default() -> BuildHasherDefault<H> | [src] |
impl<T> Default for Empty<T>[src]
impl<T> Default for Empty<T>impl<T> Default for AtomicPtr<T>[src]
impl<T> Default for AtomicPtr<T>impl<T> Default for Option<T>[src]
impl<T> Default for Option<T>impl<T> Default for Cell<T> where
T: Default, [src]
impl<T> Default for Cell<T> where
T: Default, impl<T> Default for RefCell<T> where
T: Default, [src]
impl<T> Default for RefCell<T> where
T: Default, impl<T> Default for UnsafeCell<T> where
T: Default, [src]
impl<T> Default for UnsafeCell<T> where
T: Default, fn default() -> UnsafeCell<T> | [src] |
Creates an UnsafeCell, with the Default value for T.
impl<T> Default for Reverse<T> where
T: Default, [src]
impl<T> Default for Reverse<T> where
T: Default, impl<T> Default for PhantomData<T> where
T: ?Sized, [src]
impl<T> Default for PhantomData<T> where
T: ?Sized, fn default() -> PhantomData<T> | [src] |
impl<T> Default for ManuallyDrop<T> where
T: Default + ?Sized, [src]
impl<T> Default for ManuallyDrop<T> where
T: Default + ?Sized, fn default() -> ManuallyDrop<T> | [src] |
impl<T> Default for Wrapping<T> where
T: Default, [src]
impl<T> Default for Wrapping<T> where
T: Default,