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 lazy value using Default as the initializing function.

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

Creates an empty CString.

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

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

Constructs an empty OsString.

Creates an empty OsStr.

Creates a new empty cell.

Example
#![feature(once_cell)]

use std::lazy::SyncOnceCell;

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

Constructs a new RandomState.

Returns the default value of 0

Returns the default value of 0.0

Returns the default value of false

Returns the default value of 0

Returns the default value of 0

Returns the default value of \x00

Creates an empty mutable str

Creates an empty slice.

Returns the default value of 0

Returns the default value of 0

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

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

Returns the default value of 0

Returns the default value of 0

Returns the default value of ()

Returns the default value of 0.0

Returns the default value of 0

Creates a mutable empty slice.

Returns None.

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

Creates an empty LinkedList<T>.

Creates an empty String.

Creates an empty BinaryHeap<T>.

Implementors

impl Default for Adler32

impl Default for AHasher

impl Default for Config

impl Default for Builder

impl Default for ForWhat

impl<T: Default, A: Default, B: Default> Default for AnagolayRecord<T, A, B>

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<'a> Default for Executor<'a>

impl<'a> Default for LocalExecutor<'a>

impl<T: Default + ?Sized> Default for Mutex<T>

impl<T: Default + ?Sized> Default for RwLock<T>

impl<T: Default + ?Sized> Default for Mutex<T>

impl Default for Builder

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

impl Default for Condvar

impl Default for PathBuf

impl<T: Copy + Default> Default for Atomic<T>

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 Default for Blake2b

impl Default for Blake2s

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

impl Default for BString

impl<'a> Default for &'a BStr

impl<'a> Default for &'a mut BStr

impl Default for Bump

impl Default for Bytes

impl Default for BytesMut

impl<T: Default> Default for CachePadded<T>

impl Default for Parsed

impl<const S: usize> Default for Cid<S>

impl<'a, 'b> Default for Arg<'a, 'b> where
    'a: 'b, 

impl<'a> Default for ArgMatches<'a>

impl<'a> Default for Values<'a>

impl<'a> Default for OsValues<'a>

impl<'a> Default for ArgGroup<'a>

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

impl<K, V> Default for Map<K, V> where
    K: Copy,
    V: Copy

impl<K> Default for Set<K> where
    K: Copy

impl Default for Type

impl Default for ValueLoc

impl Default for Encoding

impl<K, V> Default for SecondaryMap<K, V> where
    K: EntityRef,
    V: Clone + Default

impl<K, V> Default for PrimaryMap<K, V> where
    K: EntityRef

impl Default for Switch

impl Default for Hasher

impl<'a> Default for Select<'a>

impl<T> Default for Injector<T>

impl<T: ?Sized + Pointable> Default for Atomic<T>

impl<T: ?Sized + Pointable> Default for Shared<'_, T>

impl<T: Default> Default for AtomicCell<T>

impl<T: Default> Default for CachePadded<T>

impl Default for Backoff

impl Default for Parker

impl<T: Default> Default for ShardedLock<T>

impl Default for MacError

impl Default for Scalar

impl Default for Builder

impl Default for Target

impl Default for Builder

impl<'a> Default for Env<'a>

impl Default for Event

impl<E: Default> Default for Compat<E>

impl Default for Rng

impl<H, N> Default for CommitValidationResult<H, N>

impl<H: Default, N: Default, S: Default, Id: Default> Default for HistoricalVotes<H, N, S, Id>

impl Default for GzHeader

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<T: Default> Default for Cursor<T>

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> Default for UnwindTableRow<R>

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 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 Default for GlobSet

impl Default for Builder

impl Default for Builder

impl<'reg> Default for BlockParams<'reg>

impl<'reg> Default for BlockContext<'reg>

impl<'reg> Default for Registry<'reg>

impl<T, A: Allocator + Clone + Default> Default for RawTable<T, A>

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<T> Default for HeaderMap<T>

impl Default for Method

impl<T: Default> Default for Request<T>

impl Default for Builder

impl<T: Default> Default for Response<T>

impl Default for Builder

impl Default for Builder

impl Default for Parts

impl Default for Uri

impl Default for Version

impl Default for SizeHint

impl Default for Body

impl Default for Builder

impl Default for Idna

impl Default for Config

impl Default for Errors

impl<K, V, S> Default for IndexMap<K, V, S> where
    S: Default

impl<T, S> Default for IndexSet<T, S> where
    S: Default

impl Default for IpNet

impl Default for Ipv4Net

impl Default for Ipv6Net

impl Default for Buffer

impl Default for Array

impl Default for Boolean

impl Default for Function

impl Default for Map

impl Default for Number

impl Default for Object

impl Default for Set

impl Default for WeakMap

impl Default for WeakSet

impl Default for Collator

impl<T: Metadata> Default for MetaIoHandler<T>

impl<M: Default + Metadata> Default for IoHandler<M>

impl Default for Noop

impl Default for InMemory

impl<T> Default for LazyCell<T>

impl<T> Default for AtomicLazyCell<T>

impl<TOut> Default for DummyTransport<TOut>

impl Default for Distance

impl Default for Ping

impl Default for Ping

impl<TInbound, TOutbound, TEvent> Default for OneShotHandler<TInbound, TOutbound, TEvent> where
    TOutbound: OutboundUpgradeSend,
    TInbound: InboundUpgradeSend + Default

impl<K: Hash + Eq, V, S: BuildHasher + Default> Default for LinkedHashMap<K, V, S>

impl<T, S> Default for LinkedHashSet<T, S> where
    T: Eq + Hash,
    S: BuildHasher + Default

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 Default for Builder

impl<T> Default for Timer<T>

impl<const S: usize> Default for IdentityHasher<S>

impl<const S: usize> Default for Multihash<S>

impl Default for Version

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 Default for Name

impl<'a> Default for Generator<'a>

impl<T> Default for NoHashHasher<T>

impl Default for BigInt

impl Default for BigUint

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, 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 ObjectMap<'data>

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

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> Default for GenesisConfig<T>

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

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

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

impl<I, R, L, O> Default for EquivocationHandler<I, R, L, O>

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

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 Frame

impl Default for Settings

impl Default for Builder

impl Default for Parker

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 Gauge

impl Default for Counter

impl Default for Quantile

impl Default for Summary

impl Default for Untyped

impl Default for Bucket

impl Default for Metric

impl Default for Registry

impl Default for Set

impl Default for Module

impl<T> Default for RefList<T>

impl Default for OsRng

impl Default for CpuId

impl Default for SgxInfo

impl Default for TscInfo

impl Default for DatIter

impl Default for DatInfo

impl Default for DatType

impl Default for Options

impl Default for Builder

impl Default for Options

impl Default for FxHasher

impl Default for Buffer

impl<B: Ord, T: Group + Default> Default for Forks<B, T>

impl Default for IoInfo

impl<Block: Block> Default for ExecutionExtensions<Block>

impl<Block: BlockT> Default for Blockchain<Block>

impl<Header: Default + HeaderT> Default for RemoteHeaderRequest<Header> where
    Header::Hash: Default,
    Header::Number: Default

impl<Header: Default + HeaderT> Default for RemoteBodyRequest<Header>

impl<Block: BlockT> Default for StorageNotifications<Block>

impl<Hash, Number, E: Epoch> Default for EpochChanges<Hash, Number, E> where
    Hash: PartialEq + Ord,
    Number: Ord

impl<Block, B> Default for VotingRulesBuilder<Block, B> where
    Block: BlockT,
    B: HeaderBackend<Block>, 

impl Default for Metadata

impl<H: Default + Hash> Default for ChangeSet<H>

impl<H: Default + Hash> Default for CommitSet<H>

impl Default for Values

impl Default for Options

impl<Hash: Hash + Member + Serialize, Ex: Debug> Default for BasePool<Hash, Ex>

impl<H, BH> Default for Sender<H, BH>

impl Default for StrCtx

impl Default for Endian

impl Default for Field

impl Default for Affine

impl Default for Jacobian

impl Default for Scalar

impl Default for Map<String, Value>

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

impl Default for Value

impl Default for Sha1

impl Default for Sha256

impl Default for Sha224

impl Default for Sha512

impl Default for Sha384

impl Default for Sha3_224

impl Default for Sha3_256

impl Default for Sha3_384

impl Default for Sha3_512

impl Default for Shake128

impl Default for Shake256

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

impl<T> Default for Slab<T>

impl<T> Default for Channel<T>

impl Default for Error

impl<T> Default for Slab<T>

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

impl Default for Codec

impl Default for Public

impl Default for Public

impl Default for Public

impl Default for BigUint

impl Default for Percent

impl Default for PerU16

impl Default for Permill

impl Default for Perbill

impl Default for FixedI64

impl<Block: BlockT> Default for HeaderMetadataCache<Block>

impl Default for Slot

impl Default for Dummy

impl Default for Public

impl Default for Public

impl Default for Public

impl Default for Duration

impl<H: Default + Clone + Send + Sync + Eq + PartialEq + Default + Hash> Default for MemDb<H>

impl<H: Default> Default for Transaction<H>

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

impl Default for KeyStore

impl<Item> Default for Digest<Item>

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

impl Default for Time

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

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

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

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

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

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

impl Default for Storage

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

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

impl<T> Default for StatusSinks<T>

impl<T: ?Sized + Default> Default for Mutex<T>

impl<T: ?Sized + Default> Default for RwLock<T>

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<'a, 'b> Default for Builder<'a, 'b>

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

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

impl Default for Builder

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 Builder

impl<K: Default, V: Default> Default for StreamMap<K, V>

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

impl Default for Notify

impl<T: ?Sized> Default for RwLock<T> where
    T: Default

impl<T> Default for DelayQueue<T>

impl Default for Handle

impl<T> Default for Lock<T> where
    T: Default

impl Default for Builder

impl Default for Map<String, Value>

impl Default for Dispatch

impl Default for Builder

impl Default for Builder

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<T: Default> Default for TryLock<T>

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<S: Default> Default for Ascii<S>

impl<S: AsRef<str> + Default> Default for UniCase<S>

impl Default for Error

impl<T: Default> Default for Uvi<T>

impl<T> Default for UviBytes<T>

impl<V> Default for VecMap<V>

impl Default for JsValue

impl Default for Program

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

impl Default for Parser

impl Default for Config

impl Default for Engine

impl Default for Store

impl Default for Module

impl<'data> Default for ModuleTranslation<'data>

impl<'a> Default for DebugInfoData<'a>

impl<'a> Default for NameSection<'a>

impl Default for Tunables

impl<'a> Default for Imports<'a>

impl<'a> Default for Names<'a>

impl Default for instance

impl Default for module

impl Default for func

impl Default for table

impl Default for global

impl Default for tag

impl Default for memory

impl Default for type

impl<'a> Default for FunctionType<'a>

impl<'a> Default for FunctionTypeNoNames<'a>

impl<'a> Default for ModuleType<'a>

impl<'a> Default for InstanceType<'a>

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

impl Default for Config

impl<'a> Default for CCtx<'a>

impl Default for DCtx<'_>