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 struct
s that define a set of options:
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:
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.
Default
?Provide an implementation for the default()
method that returns the value of your type that should be the default:
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.
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:
impl Default for bool
[src]
impl Default for char
[src]
impl Default for f32
[src]
impl Default for f64
[src]
impl Default for i8
[src]
impl Default for i16
[src]
impl Default for i32
[src]
impl Default for i64
[src]
impl Default for i128
[src]
impl Default for isize
[src]
impl Default for u8
[src]
impl Default for u16
[src]
impl Default for u32
[src]
impl Default for u64
[src]
impl Default for u128
[src]
impl Default for ()
[src]
impl Default for usize
[src]
impl Default for Global
[src]
impl Default for System
[src]
impl Default for Box<str>
[src]
impl Default for Box<CStr>
[src]
impl Default for Box<OsStr>
[src]
impl Default for DefaultHasher
[src]
fn default() -> DefaultHasher
[src]
Creates a new DefaultHasher
using new
. See its documentation for more.
impl Default for RandomState
[src]
fn default() -> RandomState
[src]
Constructs a new RandomState
.
impl Default for CString
[src]
impl Default for OsString
[src]
impl Default for Error
[src]
impl Default for SipHasher
[src]
impl Default for RangeFull
[src]
impl Default for PathBuf
[src]
impl Default for String
[src]
impl Default for AtomicBool
[src]
fn default() -> AtomicBool
[src]
Creates an AtomicBool
initialized to false
.
impl Default for AtomicI8
[src]
impl Default for AtomicI16
[src]
impl Default for AtomicI32
[src]
impl Default for AtomicI64
[src]
impl Default for AtomicIsize
[src]
fn default() -> AtomicIsize
[src]
impl Default for AtomicU8
[src]
impl Default for AtomicU16
[src]
impl Default for AtomicU32
[src]
impl Default for AtomicU64
[src]
impl Default for AtomicUsize
[src]
fn default() -> AtomicUsize
[src]
impl Default for Condvar
[src]
impl Default for Duration
[src]
impl<'_> Default for &'_ str
[src]
impl<'_> Default for &'_ CStr
[src]
impl<'_> Default for &'_ OsStr
[src]
impl<'_> Default for &'_ mut str
[src]
impl<'_, B> Default for Cow<'_, B> where
B: ToOwned + ?Sized,
<B as ToOwned>::Owned: Default,
[src]
fn default() -> Cow<'_, B>
[src]
Creates an owned Cow<'a, B> with the default value for the contained owned value.
impl<'_, T> Default for &'_ [T]
[src]
impl<'_, T> Default for &'_ mut [T]
[src]
fn default() -> &'_ mut [T]ⓘ
[src]
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]
fn default() -> BuildHasherDefault<H>
[src]
impl<Idx> Default for Range<Idx> where
Idx: Default,
[src]
impl<K, V> Default for BTreeMap<K, V> where
K: Ord,
[src]
impl<K, V, S> Default for HashMap<K, V, S> where
S: Default,
[src]
fn default() -> HashMap<K, V, S>
[src]
Creates an empty HashMap<K, V, S>
, with the Default
value for the hasher.
impl<T> Default for Option<T>
[src]
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]
impl<T> Default for Box<T> where
T: Default,
[src]
impl<T> Default for Cell<T> where
T: Default,
[src]
impl<T> Default for RefCell<T> where
T: Default,
[src]
impl<T> Default for UnsafeCell<T> where
T: Default,
[src]
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 BTreeSet<T> where
T: Ord,
[src]
impl<T> Default for BinaryHeap<T> where
T: Ord,
[src]
fn default() -> BinaryHeap<T>
[src]
Creates an empty BinaryHeap<T>
.
impl<T> Default for LinkedList<T>
[src]
fn default() -> LinkedList<T>
[src]
Creates an empty LinkedList<T>
.
impl<T> Default for VecDeque<T>
[src]
impl<T> Default for Empty<T>
[src]
impl<T> Default for Lazy<T, fn() -> T> where
T: Default,
[src]
fn default() -> Lazy<T, fn() -> T>
[src]
Creates a new lazy value using Default
as the initializing function.
impl<T> Default for OnceCell<T>
[src]
impl<T> Default for SyncOnceCell<T>
[src]
fn default() -> SyncOnceCell<T>
[src]
impl<T> Default for PhantomData<T> where
T: ?Sized,
[src]
fn default() -> PhantomData<T>
[src]
impl<T> Default for ManuallyDrop<T> where
T: Default + ?Sized,
[src]
fn default() -> ManuallyDrop<T>
[src]
impl<T> Default for Wrapping<T> where
T: Default,
[src]
impl<T> Default for Rc<T> where
T: Default,
[src]
impl<T> Default for std::rc::Weak<T>
[src]
impl<T> Default for AtomicPtr<T>
[src]
impl<T> Default for Arc<T> where
T: Default,
[src]
impl<T> Default for std::sync::Weak<T>
[src]
impl<T> Default for Vec<T>
[src]
impl<T, S> Default for HashSet<T, S> where
S: Default,
[src]
fn default() -> HashSet<T, S>
[src]
Creates an empty HashSet<T, S>
with the Default
value for the hasher.
impl<T: Default> Default for Cursor<T>
[src]
impl<T: Default> Default for SyncLazy<T>
[src]
fn default() -> SyncLazy<T>
[src]
Creates a new lazy value using Default
as the initializing function.
impl<T: Default> Default for RwLock<T>
[src]
impl<T: ?Sized + Default> Default for Mutex<T>
[src]
© 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