Trait ockam_core::lib::Default1.0.0[][src]

pub trait Default {
    fn default() -> Self;
}
Expand description

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[src]

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<T> Default for [T; 10] where
    T: Default
[src]

pub fn default() -> [T; 10][src]

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

pub fn default() -> [T; 20][src]

impl Default for AtomicBool[src]

pub fn default() -> AtomicBool[src]

Creates an AtomicBool initialized to false.

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

pub fn default() -> [T; 3][src]

impl Default for f64[src]

pub fn default() -> f64[src]

Returns the default value of 0.0

impl Default for SipHasher[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
    C: Default,
    A: Default,
    E: Default,
    B: Default,
    F: Default,
    I: Default,
    H: Default,
    D: Default,
    G: Default,
    J: Default
[src]

pub fn default() -> (A, B, C, D, E, F, G, H, I, J)[src]

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

pub fn default() -> [T; 25][src]

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

pub fn default() -> &'_ mut str[src]

Creates an empty mutable str

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

pub fn default() -> [T; 8][src]

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

pub fn default() -> [T; 16][src]

impl Default for f32[src]

pub fn default() -> f32[src]

Returns the default value of 0.0

impl Default for i32[src]

pub fn default() -> i32[src]

Returns the default value of 0

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

pub fn default() -> [T; 9][src]

impl Default for AtomicI8[src]

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

pub fn default() -> [T; 29][src]

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

pub fn default() -> [T; 30][src]

impl Default for isize[src]

pub fn default() -> isize[src]

Returns the default value of 0

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

pub fn default() -> (A, B, C)[src]

impl<T> Default for Lazy<T, fn() -> T> where
    T: Default
[src]

pub fn default() -> Lazy<T, fn() -> T>[src]

Creates a new lazy value using Default as the initializing function.

impl Default for char[src]

pub fn default() -> char[src]

Returns the default value of \x00

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

pub fn default() -> [T; 32][src]

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

pub fn default() -> &'_ mut [T]

Notable traits for &'_ mut [u8]

impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
[src]

Creates a mutable empty slice.

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

pub fn default() -> (A, B, C, D, E, F, G)[src]

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

pub fn default() -> UnsafeCell<T>[src]

Creates an UnsafeCell, with the Default value for T.

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

pub fn default() -> OnceCell<T>[src]

impl Default for u16[src]

pub fn default() -> u16[src]

Returns the default value of 0

impl Default for usize[src]

pub fn default() -> usize[src]

Returns the default value of 0

impl Default for u8[src]

pub fn default() -> u8[src]

Returns the default value of 0

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

pub fn default() -> [T; 5][src]

impl Default for AtomicU16[src]

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

pub fn default() -> (A, B, C, D, E, F, G, H)[src]

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

pub fn default() -> (A, B, C, D, E)[src]

impl Default for u32[src]

pub fn default() -> u32[src]

Returns the default value of 0

impl Default for AtomicU64[src]

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

pub fn default() -> (A, B, C, D, E, F, G, H, I)[src]

impl Default for Duration[src]

impl Default for bool[src]

pub fn default() -> bool[src]

Returns the default value of false

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

pub fn default() -> [T; 24][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
    C: Default,
    A: Default,
    E: Default,
    K: Default,
    B: Default,
    F: Default,
    I: Default,
    H: Default,
    D: Default,
    G: Default,
    J: Default,
    L: Default
[src]

pub fn default() -> (A, B, C, D, E, F, G, H, I, J, K, L)[src]

impl Default for u64[src]

pub fn default() -> u64[src]

Returns the default value of 0

impl Default for AtomicU32[src]

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

pub fn default() -> (A, B, C, D)[src]

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

pub fn default() -> (A, B)[src]

impl Default for u128[src]

pub fn default() -> u128[src]

Returns the default value of 0

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

pub fn default() -> [T; 17][src]

impl Default for i8[src]

pub fn default() -> i8[src]

Returns the default value of 0

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

pub fn default() -> [T; 15][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
    C: Default,
    A: Default,
    E: Default,
    K: Default,
    B: Default,
    F: Default,
    I: Default,
    H: Default,
    D: Default,
    G: Default,
    J: Default
[src]

pub fn default() -> (A, B, C, D, E, F, G, H, I, J, K)[src]

impl Default for i16[src]

pub fn default() -> i16[src]

Returns the default value of 0

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

pub fn default() -> [T; 18][src]

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

pub fn default() -> [T; 2][src]

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

pub fn default() -> [T; 4][src]

impl Default for AtomicUsize[src]

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

pub fn default() -> [T; 27][src]

impl Default for i128[src]

pub fn default() -> i128[src]

Returns the default value of 0

impl Default for AtomicI32[src]

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

pub fn default() -> [T; 23][src]

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

pub fn default() -> [T; 22][src]

impl Default for AtomicU8[src]

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

pub fn default() -> [T; 6][src]

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

pub fn default() -> [T; 13][src]

impl Default for ()[src]

pub fn default()[src]

Returns the default value of ()

impl Default for RangeFull[src]

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

pub fn default() -> [T; 19][src]

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

pub fn default() -> [T; 1][src]

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

pub fn default() -> [T; 26][src]

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

pub fn default() -> [T; 7][src]

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

pub fn default() -> [T; 31][src]

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

pub fn default() -> &'_ str[src]

Creates an empty str

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

pub fn default() -> (A,)[src]

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

pub fn default() -> [T; 28][src]

impl<T> Default for [T; 0][src]

pub fn default() -> [T; 0][src]

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

pub fn default() -> [T; 14][src]

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

pub fn default() -> (A, B, C, D, E, F)[src]

impl Default for AtomicIsize[src]

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

pub fn default() -> [T; 21][src]

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

pub fn default() -> [T; 12][src]

impl Default for AtomicI64[src]

impl Default for i64[src]

pub fn default() -> i64[src]

Returns the default value of 0

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

pub fn default() -> &'_ [T]

Notable traits for &'_ mut [u8]

impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
[src]

Creates an empty slice.

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

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

pub fn default() -> AtomicPtr<T>[src]

Creates a null AtomicPtr<T>.

impl Default for AtomicI16[src]

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

pub fn default() -> [T; 11][src]

impl<T, S> Default for HashSet<T, S> where
    S: Default
[src]

pub fn default() -> HashSet<T, S>[src]

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

impl Default for CString[src]

pub fn default() -> CString[src]

Creates an empty CString.

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

pub fn default() -> Cursor<T>

Notable traits for Cursor<&'_ mut [u8]>

impl<'_> Write for Cursor<&'_ mut [u8]>impl Write for Cursor<Box<[u8], Global>>impl<'_> Write for Cursor<&'_ mut Vec<u8, Global>>impl Write for Cursor<Vec<u8, Global>>impl<T> Read for Cursor<T> where
    T: AsRef<[u8]>, 
[src]

impl<K, V, S> Default for HashMap<K, V, S> where
    S: Default
[src]

pub fn default() -> HashMap<K, V, S>[src]

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

impl Default for RandomState[src]

pub fn default() -> RandomState[src]

Constructs a new RandomState.

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

pub fn default() -> SyncOnceCell<T>[src]

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

pub fn default() -> Mutex<T>[src]

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

impl<T> Default for SyncLazy<T, fn() -> T> where
    T: Default
[src]

pub fn default() -> SyncLazy<T, fn() -> T>[src]

Creates a new lazy value using Default as the initializing function.

impl Default for PathBuf[src]

pub fn default() -> PathBuf[src]

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

pub fn default() -> &'_ CStr[src]

impl Default for Condvar[src]

pub fn default() -> Condvar[src]

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

impl Default for System[src]

pub fn default() -> System[src]

impl Default for DefaultHasher[src]

pub fn default() -> DefaultHasher[src]

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

impl Default for OsString[src]

pub fn default() -> OsString[src]

Constructs an empty OsString.

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

pub fn default() -> &'_ OsStr[src]

Creates an empty OsStr.

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

pub fn default() -> RwLock<T>[src]

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

impl Default for Global[src]

pub fn default() -> Global[src]

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

pub 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 Weak<T>[src]

pub fn default() -> Weak<T>[src]

Constructs a new Weak<T>, without allocating memory. Calling 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 Weak<T>[src]

pub fn default() -> Weak<T>[src]

Constructs a new Weak<T>, without allocating any memory. Calling 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 Arc<T> where
    T: Default
[src]

pub 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 Default for IgnoredAny[src]

impl Default for AHasher

Provides a default Hasher with fixed keys. This is typically used in conjunction with BuildHasherDefault to create [AHasher]s in order to hash the keys of the map.

Generally it is preferable to use [RandomState] instead, so that different hashmaps will have different keys. However if fixed keys are desireable this may be used instead.

Example

use std::hash::BuildHasherDefault;
use ahash::{AHasher, RandomState};
use std::collections::HashMap;

let mut map: HashMap<i32, i32, BuildHasherDefault<AHasher>> = HashMap::default();
map.insert(12, 34);

pub fn default() -> AHasher

Constructs a new [AHasher] with fixed keys. If std is enabled these will be generated upon first invocation. Otherwise if the compile-time-rngfeature is enabled these will be generated at compile time. If neither of these features are available, hardcoded constants will be used.

Because the values are fixed, different hashers will all hash elements the same way. This could make hash values predictable, if DOS attacks are a concern. If this behaviour is not required, it may be preferable to use [RandomState] instead.

Examples

use ahash::AHasher;
use std::hash::Hasher;

let mut hasher_1 = AHasher::default();
let mut hasher_2 = AHasher::default();

hasher_1.write_u32(1234);
hasher_2.write_u32(1234);

assert_eq!(hasher_1.finish(), hasher_2.finish());

impl Default for RandomState

pub fn default() -> RandomState

impl Default for OnceNonZeroUsize

pub fn default() -> OnceNonZeroUsize

impl<T> Default for Lazy<T, fn() -> T> where
    T: Default

pub fn default() -> Lazy<T, fn() -> T>

Creates a new lazy value using Default as the initializing function.

impl<T> Default for OnceBox<T>

pub fn default() -> OnceBox<T>

impl<T> Default for OnceCell<T>

pub fn default() -> OnceCell<T>

impl Default for OnceBool

pub fn default() -> OnceBool

impl Default for ThreadRng[src]

impl Default for OsRng[src]

pub fn default() -> OsRng[src]

impl Default for vec128_storage

pub fn default() -> vec128_storage

impl Default for vec256_storage

pub fn default() -> vec256_storage

impl Default for vec512_storage

pub fn default() -> vec512_storage

impl Default for Int[src]

pub fn default() -> Int[src]

impl Default for Uint[src]

pub fn default() -> Uint[src]

Implementors

impl Default for Error[src]

pub fn default() -> Error[src]

impl Default for PhantomPinned1.33.0[src]

impl Default for Box<str, Global>1.17.0[src]

pub fn default() -> Box<str, Global>

Notable traits for Box<W, Global>

impl<W> Write for Box<W, Global> where
    W: Write + ?Sized
impl<R> Read for Box<R, Global> where
    R: Read + ?Sized
impl<F, A> Future for Box<F, A> where
    A: Allocator + 'static,
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    A: Allocator,
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;
[src]

impl Default for Box<CStr, Global>1.17.0[src]

pub fn default() -> Box<CStr, Global>

Notable traits for Box<W, Global>

impl<W> Write for Box<W, Global> where
    W: Write + ?Sized
impl<R> Read for Box<R, Global> where
    R: Read + ?Sized
impl<F, A> Future for Box<F, A> where
    A: Allocator + 'static,
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    A: Allocator,
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;
[src]

impl Default for Box<OsStr, Global>1.17.0[src]

pub fn default() -> Box<OsStr, Global>

Notable traits for Box<W, Global>

impl<W> Write for Box<W, Global> where
    W: Write + ?Sized
impl<R> Read for Box<R, Global> where
    R: Read + ?Sized
impl<F, A> Future for Box<F, A> where
    A: Allocator + 'static,
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    A: Allocator,
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;
[src]

impl Default for String[src]

pub fn default() -> String[src]

Creates an empty String.

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

pub fn default() -> Cow<'_, B>[src]

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

impl<Idx> Default for Range<Idx> where
    Idx: Default
[src]

pub fn default() -> Range<Idx>

Notable traits for Range<A>

impl<A> Iterator for Range<A> where
    A: Step
type Item = A;
[src]

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

pub fn default() -> BTreeMap<K, V>[src]

Creates an empty BTreeMap.

impl<K, V, S, A> Default for ockam_core::lib::HashMap<K, V, S, A> where
    S: Default,
    A: Default + Allocator + Clone
[src]

pub fn default() -> HashMap<K, V, S, A>[src]

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

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

pub fn default() -> Option<T>[src]

Returns None.

Examples

let opt: Option<u32> = Option::default();
assert!(opt.is_none());

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

pub fn default() -> Reverse<T>[src]

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

pub fn default() -> Empty<T>

Notable traits for Empty<T>

impl<T> Iterator for Empty<T> type Item = T;
[src]

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

pub fn default() -> ManuallyDrop<T>[src]

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

pub fn default() -> Wrapping<T>[src]

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

pub fn default() -> BTreeSet<T>[src]

Creates an empty BTreeSet.

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

pub fn default() -> BinaryHeap<T>[src]

Creates an empty BinaryHeap<T>.

impl<T> Default for Box<[T], Global>[src]

pub fn default() -> Box<[T], Global>

Notable traits for Box<W, Global>

impl<W> Write for Box<W, Global> where
    W: Write + ?Sized
impl<R> Read for Box<R, Global> where
    R: Read + ?Sized
impl<F, A> Future for Box<F, A> where
    A: Allocator + 'static,
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    A: Allocator,
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;
[src]

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

pub fn default() -> Box<T, Global>

Notable traits for Box<W, Global>

impl<W> Write for Box<W, Global> where
    W: Write + ?Sized
impl<R> Read for Box<R, Global> where
    R: Read + ?Sized
impl<F, A> Future for Box<F, A> where
    A: Allocator + 'static,
    F: Future + Unpin + ?Sized
type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    A: Allocator,
    I: Iterator + ?Sized
type Item = <I as Iterator>::Item;
[src]

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

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

pub fn default() -> Cell<T>[src]

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

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

pub fn default() -> LinkedList<T>[src]

Creates an empty LinkedList<T>.

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

pub fn default() -> PhantomData<T>[src]

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

pub fn default() -> RefCell<T>[src]

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

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

pub fn default() -> Vec<T, Global>

Notable traits for Vec<u8, A>

impl<A> Write for Vec<u8, A> where
    A: Allocator
[src]

Creates an empty Vec<T>.

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

pub fn default() -> VecDeque<T>[src]

Creates an empty VecDeque<T>.

impl<T, S, A> Default for ockam_core::lib::HashSet<T, S, A> where
    S: Default,
    A: Default + Allocator + Clone
[src]

pub fn default() -> HashSet<T, S, A>[src]

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