Trait sp_std::default::Default

1.0.0 · source · []
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

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

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

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

Creates an empty OsStr.

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

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

Constructs an empty OsString.

Constructs a new RandomState.

Creates a new empty cell.

Example
#![feature(once_cell)]

use std::lazy::SyncOnceCell;

fn main() {
    assert_eq!(SyncOnceCell::<()>::new(), SyncOnceCell::default());
}

Creates an empty CString.

Returns the default value of 0

Returns the default value of 0

Creates an empty slice.

Returns the default value of false

Returns None.

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

Returns the default value of 0.0

Returns the default value of 0

Returns the default value of 0

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

Creates a mutable empty slice.

Returns the default value of 0

Creates an empty str

Returns the default value of 0

Returns the default value of 0

Returns the default value of 0

Returns the default value of 0

Returns the default value of ()

Creates an empty mutable str

Returns the default value of \x00

Returns the default value of 0.0

Returns the default value of 0

Returns the default value of 0

Returns the default value of 0

Creates an empty String.

Creates an empty BinaryHeap<T>.

Creates an empty LinkedList<T>.

Implementors

impl Default for Adler32

impl Default for AHasher

impl Default for Config

impl Default for Builder

impl Default for Style

impl Default for Chain<'_>

impl<A, B> Default for AbsDiff<A, B> where
    A: AbsDiffEq<B> + ?Sized,
    B: ?Sized

impl<A, B> Default for Relative<A, B> where
    A: RelativeEq<B> + ?Sized,
    B: ?Sized

impl<A, B> Default for Ulps<A, B> where
    A: UlpsEq<B> + ?Sized,
    B: ?Sized

impl<T, const CAP: usize> Default for ArrayVec<T, CAP>

impl<const CAP: usize> Default for ArrayString<CAP>

impl Default for Language

impl<O, V> Default for BitArray<O, V> where
    O: BitOrder,
    V: BitView

impl<R: Default> Default for BitIdx<R> where
    R: BitRegister

impl<R: Default> Default for BitIdxError<R> where
    R: BitRegister

impl<R: Default> Default for BitTail<R> where
    R: BitRegister

impl<R: Default> Default for BitPos<R> where
    R: BitRegister

impl<R: Default> Default for BitSel<R> where
    R: BitRegister

impl<R: Default> Default for BitMask<R> where
    R: BitRegister

impl Default for Lsb0

impl Default for Msb0

impl<M, O, T> Default for BitPtrRange<M, O, T> where
    M: Mutability,
    O: BitOrder,
    T: BitStore

impl<O, T> Default for IterOnes<'_, O, T> where
    O: BitOrder,
    T: BitStore

impl<O, T> Default for IterZeros<'_, O, T> where
    O: BitOrder,
    T: BitStore

impl<O, T> Default for &BitSlice<O, T> where
    O: BitOrder,
    T: BitStore

impl<O, T> Default for &mut BitSlice<O, T> where
    O: BitOrder,
    T: BitStore

impl<O, T> Default for BitBox<O, T> where
    O: BitOrder,
    T: BitStore

impl<O, T> Default for BitVec<O, T> where
    O: BitOrder,
    T: BitStore

impl<BlockSize: Default + ArrayLength<u8>> Default for BlockBuffer<BlockSize>

impl Default for Parsed

impl Default for MacError

impl Default for Scalar

impl<K, V, S> Default for BoundedBTreeMap<K, V, S> where
    K: Ord,
    S: Get<u32>, 

impl<T, S> Default for BoundedBTreeSet<T, S> where
    T: Ord,
    S: Get<u32>, 

impl<T, S> Default for BoundedVec<T, S>

impl<T, S> Default for WeakBoundedVec<T, S>

impl<B: Balance, OnDrop: HandleImbalanceDrop<B>, OppositeOnDrop: HandleImbalanceDrop<B>> Default for Imbalance<B, OnDrop, OppositeOnDrop>

impl<T: Default> Default for WrapperOpaque<T>

impl Default for Pays

impl<T: SigningTypes, C: AppCrypto<T::Public, T::Signature>, X> Default for Signer<T, C, X>

impl<T: Default + Config + Send + Sync> Default for CheckWeight<T>

impl Default for Phase

impl<Index: Default, AccountData: Default> Default for AccountInfo<Index, AccountData>

impl Default for InitKind

impl<T> Default for ChainContext<T>

impl<F> Default for OptionFuture<F>

impl Default for PollNext

impl<Fut: Future> Default for FuturesOrdered<Fut>

impl<Fut> Default for FuturesUnordered<Fut>

impl<St: Stream + Unpin> Default for SelectAll<St>

impl<T: Default> Default for Cursor<T>

impl<T: Default> Default for Mutex<T>

impl<T: Default, N> Default for GenericArray<T, N> where
    N: ArrayLength<T>, 

impl<R: Default> Default for DebugAddr<R>

impl<R: Reader, A: UnwindContextStorage<R>> Default for UnwindContext<R, A>

impl<R: Reader> Default for CfaRule<R>

impl Default for Pointer

impl<R: Default> Default for Dwarf<R>

impl<R: Reader> Default for RangeIter<R>

impl<'input, Endian: Default> Default for EndianSlice<'input, Endian> where
    Endian: Endianity

impl<R: Default> Default for DebugAbbrev<R>

impl<R: Default> Default for DebugAranges<R>

impl<R: Default> Default for DebugCuIndex<R>

impl<R: Default> Default for DebugTuIndex<R>

impl<R: Default> Default for DebugLine<R>

impl<R: Default> Default for DebugLoc<R>

impl<R: Default> Default for DebugLocLists<R>

impl<R: Default> Default for LocationLists<R>

impl<R: Default> Default for DebugRanges<R>

impl<R: Default> Default for DebugRngLists<R>

impl<R: Default> Default for RangeLists<R>

impl<R: Default> Default for DebugStr<R>

impl<R: Default> Default for DebugLineStr<R>

impl<R: Default> Default for DebugInfo<R>

impl<R: Default> Default for DebugTypes<R>

impl<K, V, S, A> Default for HashMap<K, V, S, A> where
    S: Default,
    A: Default + Allocator + Clone

impl<T, S, A> Default for HashSet<T, S, A> where
    S: Default,
    A: Default + Allocator + Clone

impl Default for Buffer

impl Default for Field

impl Default for Affine

impl Default for Jacobian

impl Default for Scalar

impl<R: RawMutex, T: ?Sized + Default> Default for Mutex<R, T>

impl<R: RawMutex, G: GetThreadId, T: ?Sized + Default> Default for ReentrantMutex<R, G, T>

impl<R: RawRwLock, T: ?Sized + Default> Default for RwLock<R, T>

impl<T> Default for MemCounter<T>

impl<T> Default for NoopTracker<T>

impl<'a, H, KF, T, M> Default for MemoryDB<H, KF, T, M> where
    H: KeyHasher,
    T: From<&'a [u8]>,
    KF: KeyFunction<H>,
    M: MemTracker<T> + Default

impl<T: Default, const R: usize, const C: usize> Default for ArrayStorage<T, R, C> where
    [[T; R]; C]: Default

impl<T, R, C, S> Default for Matrix<T, R, C, S> where
    T: Scalar,
    R: Dim,
    C: Dim,
    S: Default

impl<T: Scalar + Zero> Default for Quaternion<T>

impl<T: Scalar + Zero> Default for DualQuaternion<T>

impl<T: Default> Default for Complex<T>

impl<E: Default + Endian> Default for U16Bytes<E>

impl<E: Default + Endian> Default for U32Bytes<E>

impl<E: Default + Endian> Default for U64Bytes<E>

impl<E: Default + Endian> Default for I16Bytes<E>

impl<E: Default + Endian> Default for I32Bytes<E>

impl<E: Default + Endian> Default for I64Bytes<E>

impl<'data> Default for Bytes<'data>

impl<'data, R: ReadRef<'data>> Default for StringTable<'data, R>

impl<'data> Default for SectionTable<'data>

impl<'data, Elf: Default + FileHeader, R: Default> Default for SectionTable<'data, Elf, R> where
    R: ReadRef<'data>,
    Elf::SectionHeader: Default

impl<'data, Elf: FileHeader, R: ReadRef<'data>> Default for SymbolTable<'data, Elf, R>

impl<'data> Default for Version<'data>

impl<'data, Elf: FileHeader> Default for VersionTable<'data, Elf>

impl<'data, E: Default + Endian> Default for LoadCommandIterator<'data, E>

impl<'data, Mach: MachHeader, R: ReadRef<'data>> Default for SymbolTable<'data, Mach, R>

impl<'data> Default for RelocationBlockIterator<'data>

impl<'data> Default for ObjectMap<'data>

impl<'data> Default for ObjectMapEntry<'data>

impl<E: Default + Endian> Default for Sym32<E>

impl<E: Default + Endian> Default for Sym64<E>

impl<T> Default for OnceCell<T>

impl<T: Default> Default for Lazy<T>

impl<T> Default for OnceCell<T>

impl<T: Default> Default for Lazy<T>

impl Default for OnceBool

impl<T> Default for OnceBox<T>

impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I>

impl<Balance: Default> Default for AccountData<Balance>

impl<T: Config<I>, I: 'static> Default for PositiveImbalance<T, I>

impl<T: Config<I>, I: 'static> Default for NegativeImbalance<T, I>

impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I>

impl<Balance: Default> Default for AccountData<Balance>

impl<T: Config<I>, I: 'static> Default for PositiveImbalance<T, I>

impl<T: Config<I>, I: 'static> Default for NegativeImbalance<T, I>

impl<T: Config> Default for GenesisConfig<T>

impl<Balance: Default> Default for RuntimeDispatchInfo<Balance>

impl Default for Module

impl<T: Default> Default for IndexMap<T>

impl Default for Condvar

impl Default for Once

impl Default for SpinWait

impl Default for U128

impl Default for U256

impl Default for U512

impl Default for H128

impl Default for H160

impl Default for H256

impl Default for H512

impl Default for OsRng

impl Default for Builder

impl Default for FxHasher

impl Default for Buffer

impl<S> Default for TypeBuilder<S>

impl<T> Default for FieldsBuilder<T>

impl Default for Variants

impl<T: Ord> Default for Interner<T>

impl Default for Registry

impl<T> Default for Path<T> where
    T: Form

impl Default for Map<String, Value>

impl<'a> Default for PrettyFormatter<'a>

impl Default for Value

impl Default for Sha256

impl Default for Sha224

impl Default for Sha512

impl Default for Sha384

impl<T> Default for Pool<T> where
    T: Clear + Default

impl<T> Default for Slab<T>

impl Default for Error

impl<T> Default for Slab<T>

impl<A: Array> Default for SmallVec<A>

impl Default for Public

impl Default for Public

impl Default for Public

impl Default for BigUint

impl Default for FixedI64

impl Default for Percent

impl Default for PerU16

impl Default for Permill

impl Default for Perbill

impl Default for Dummy

impl Default for Public

impl Default for Public

impl Default for Duration

impl Default for Public

impl<T> Default for Crossing<T> where
    T: Default + Encode + Decode

impl Default for KeyStore

impl Default for Digest

impl<AccountId: Default, AccountIndex> Default for MultiAddress<AccountId, AccountIndex>

impl<T: Default> Default for Request<'static, T>

impl Default for Time

impl<T: Default> Default for IdentityLookup<T>

impl<H: Hasher> Default for TrieBackend<MemoryDB<H>, H> where
    H::Out: Codec + Ord

impl<Transaction, H: Hasher> Default for StorageTransactionCache<Transaction, H>

impl<Transaction: Default, H: Hasher> Default for StorageChanges<Transaction, H>

impl<Hash: Default> Default for ProofRecorder<Hash>

impl<H: Hasher> Default for TestExternalities<H> where
    H::Out: Ord + 'static + Codec

impl Default for Storage

impl<H: Default> Default for NodeCodec<H>

impl<H: Default> Default for Layout<H>

impl Default for Abstract

impl Default for As

impl Default for Async

impl Default for Auto

impl Default for Await

impl Default for Become

impl Default for Box

impl Default for Break

impl Default for Const

impl Default for Continue

impl Default for Crate

impl Default for Default

impl Default for Do

impl Default for Dyn

impl Default for Else

impl Default for Enum

impl Default for Extern

impl Default for Final

impl Default for Fn

impl Default for For

impl Default for If

impl Default for Impl

impl Default for In

impl Default for Let

impl Default for Loop

impl Default for Macro

impl Default for Match

impl Default for Mod

impl Default for Move

impl Default for Mut

impl Default for Override

impl Default for Priv

impl Default for Pub

impl Default for Ref

impl Default for Return

impl Default for SelfType

impl Default for Static

impl Default for Struct

impl Default for Super

impl Default for Trait

impl Default for Try

impl Default for Type

impl Default for Typeof

impl Default for Union

impl Default for Unsafe

impl Default for Unsized

impl Default for Use

impl Default for Virtual

impl Default for Where

impl Default for While

impl Default for Yield

impl Default for Add

impl Default for AddEq

impl Default for And

impl Default for AndAnd

impl Default for AndEq

impl Default for At

impl Default for Bang

impl Default for Caret

impl Default for CaretEq

impl Default for Colon

impl Default for Colon2

impl Default for Comma

impl Default for Div

impl Default for DivEq

impl Default for Dollar

impl Default for Dot

impl Default for Dot2

impl Default for Dot3

impl Default for DotDotEq

impl Default for Eq

impl Default for EqEq

impl Default for Ge

impl Default for Gt

impl Default for Le

impl Default for Lt

impl Default for MulEq

impl Default for Ne

impl Default for Or

impl Default for OrEq

impl Default for OrOr

impl Default for Pound

impl Default for Question

impl Default for RArrow

impl Default for LArrow

impl Default for Rem

impl Default for RemEq

impl Default for FatArrow

impl Default for Semi

impl Default for Shl

impl Default for ShlEq

impl Default for Shr

impl Default for ShrEq

impl Default for Star

impl Default for Sub

impl Default for SubEq

impl Default for Tilde

impl Default for Brace

impl Default for Bracket

impl Default for Paren

impl Default for Group

impl Default for Generics

impl<T, P> Default for Punctuated<T, P>

impl<T: Send> Default for CachedThreadLocal<T>

impl<T: Send> Default for ThreadLocal<T>

impl<A: Array> Default for ArrayVec<A>

impl<'s, T> Default for SliceVec<'s, T>

impl<A: Array> Default for TinyVec<A>

impl Default for Map<String, Value>

impl<Hash: Default> Default for TxKeysT<Hash>

impl<AccountId: Default> Default for OrderHeader<AccountId>

impl<Hash: Default> Default for OrderItem<Hash>

impl<Hash: Default> Default for TxKeysL<Hash>

impl<Hash: Default> Default for TxKeysM<Hash>

impl<Hash: Default> Default for TxKeysS<Hash>

impl<AccountId: Default, ReferenceHash: Default, NumberOfBlocks: Default, LockStatus: Default, StatusOfTimeRecord: Default, ReasonCodeStruct: Default, PostingPeriod: Default, StartOrEndBlockNumber: Default, NumberOfBreaks: Default> Default for Timekeeper<AccountId, ReferenceHash, NumberOfBlocks, LockStatus, StatusOfTimeRecord, ReasonCodeStruct, PostingPeriod, StartOrEndBlockNumber, NumberOfBreaks>

impl<T> Default for Set<T>

impl Default for Dispatch

impl Default for Builder

impl Default for Targets

impl<S> Default for Layer<S>

impl Default for Json

impl Default for Pretty

impl Default for Compact

impl Default for Full

impl Default for Uptime

impl Default for Identity

impl Default for Registry

impl<HO: Copy> Default for Recorder<HO>

impl<H, HO> Default for TrieRoot<H, HO>

impl<H> Default for TrieRootUnhashed<H>

impl<H, HO> Default for TrieRootPrint<H, HO>

impl Default for TrieSpec

impl Default for XxHash64

impl Default for XxHash32

impl Default for Hash64

impl Default for Hash128

impl Default for B0

impl Default for B1

impl<U: Default + Unsigned + NonZero> Default for PInt<U>

impl<U: Default + Unsigned + NonZero> Default for NInt<U>

impl Default for Z0

impl Default for UTerm

impl<U: Default, B: Default> Default for UInt<U, B>

impl Default for Greater

impl Default for Less

impl Default for Equal

impl<'a> Default for ImportsBuilder<'a>

impl<Z: Default + Zeroize> Default for Zeroizing<Z>