Trait nom::lib::std::prelude::v1::rust_2021::Default1.0.0[][src]

pub trait Default {
    pub 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 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

pub 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 PhantomData<T> where
    T: ?Sized
[src][]

impl Default for AtomicBool[src][]

pub fn default() -> AtomicBool[src][]

Creates an AtomicBool initialized to false.

impl Default for SipHasher[src][]

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

impl Default for AtomicI8[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<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][]

impl Default for AtomicU16[src][]

impl Default for AtomicU64[src][]

impl Default for Duration[src][]

impl Default for AtomicU32[src][]

impl Default for AtomicUsize[src][]

impl Default for AtomicI32[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 Default for AtomicU8[src][]

impl Default for PhantomPinned[src][]

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

impl Default for AtomicI64[src][]

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

Implementors

impl Default for ()[src][+]

pub fn default()[src][]

Returns the default value of ()

impl Default for Error[src][+]

impl Default for RangeFull[src][+]

impl Default for bool[src][+]

pub fn default() -> bool[src][]

Returns the default value of false

impl Default for char[src][+]

pub fn default() -> char[src][]

Returns the default value of \x00

impl Default for f32[src][+]

pub fn default() -> f32[src][]

Returns the default value of 0.0

impl Default for f64[src][+]

pub fn default() -> f64[src][]

Returns the default value of 0.0

impl Default for i8[src][+]

pub fn default() -> i8[src][]

Returns the default value of 0

impl Default for i16[src][+]

pub fn default() -> i16[src][]

Returns the default value of 0

impl Default for i32[src][+]

pub fn default() -> i32[src][]

Returns the default value of 0

impl Default for i64[src][+]

pub fn default() -> i64[src][]

Returns the default value of 0

impl Default for i128[src][+]

pub fn default() -> i128[src][]

Returns the default value of 0

impl Default for isize[src][+]

pub fn default() -> isize[src][]

Returns the default value of 0

impl Default for u8[src][+]

pub fn default() -> u8[src][]

Returns the default value of 0

impl Default for u16[src][+]

pub fn default() -> u16[src][]

Returns the default value of 0

impl Default for u32[src][+]

pub fn default() -> u32[src][]

Returns the default value of 0

impl Default for u64[src][+]

pub fn default() -> u64[src][]

Returns the default value of 0

impl Default for u128[src][+]

pub fn default() -> u128[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 &'_ mut str1.28.0[src][+]

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

Creates an empty mutable str

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

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

Creates an empty str

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

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

Creates an empty slice.

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

pub 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
    C: Default,
    A: Default,
    B: Default
[src][+]

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

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

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

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

impl<A, B, C, D, E, F, G, H> Default for (A, B, C, D, E, F, G, H) where
    C: Default,
    F: Default,
    E: Default,
    G: Default,
    H: Default,
    A: Default,
    B: Default,
    D: Default
[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,
    F: Default,
    E: Default,
    I: Default,
    G: Default,
    H: Default,
    A: Default,
    B: Default,
    D: 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
    C: Default,
    F: Default,
    E: Default,
    I: Default,
    G: Default,
    H: Default,
    A: Default,
    B: Default,
    D: 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
    C: Default,
    F: Default,
    E: Default,
    I: Default,
    G: Default,
    H: Default,
    A: Default,
    B: Default,
    D: 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
    C: Default,
    F: Default,
    E: Default,
    I: Default,
    G: Default,
    H: Default,
    A: Default,
    B: Default,
    D: Default,
    J: Default,
    K: Default,
    L: Default
[src][+]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<T> Default for [T; 10] where
    T: Default
1.4.0[src][+]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl Default for Point

impl Default for Adler32

impl Default for RollingAdler32

impl Default for BigEndian

impl Default for LittleEndian

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

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 WaitGroup

impl Default for Compression

impl Default for SpecialOptions

impl Default for CompressionOptions

impl Default for StencilSide

impl Default for Stencil

impl Default for Depth

impl Default for BlendChannel

impl Default for Blend

impl Default for Color

impl Default for RefValues

impl Default for EventSettings

impl Default for FnvHasher

impl<R: Resources> Default for IndexBuffer<R>

impl<'a> Default for Frame<'a>

impl Default for PixelFormatRequirements

impl<S> Default for GlAttributes<S>

impl Default for DrawState

impl Default for Rgbe8Pixel

impl Default for PixelDensity

impl Default for CompressionType

impl Default for FilterType

impl Default for Frame

impl<P, Container> Default for ImageBuffer<P, Container> where
    P: Pixel,
    Container: Default

impl Default for ModifierKey

impl<T> Default for LazyCell<T>

impl<T> Default for AtomicLazyCell<T>

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

impl Default for CompressorOxide

impl Default for DecompressorOxide

impl Default for InflateState

impl Default for Builder

impl<T> Default for Timer<T>

impl Default for CpuSet

impl Default for QuotaValidFlags

impl Default for Dqblk

impl Default for FdSet

impl<T> Default for AlgSetKey<T>

impl Default for UnixCredentials

impl Default for FsFlags

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 OnceNonZeroUsize

impl Default for OnceBool

impl<T> Default for OnceBox<T>

impl Default for Condvar

impl Default for Once

impl Default for UnparkResult

impl Default for SpinWait

impl Default for FrameControl

impl Default for Info

impl Default for StreamingDecoder

impl Default for Limits

impl Default for TokenStream

impl Default for ThreadPoolBuilder

impl Default for Configuration

impl<N: Default> Default for Point<N>

impl<N: Default> Default for Vector<N>

impl<N: Default> Default for Rect<N>

impl Default for IgnoredAny

impl<T> Default for Slab<T>

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

impl Default for ModifiersState

impl Default for ConceptConfig

impl Default for SpinSleeper

impl Default for Underscore

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 SelfValue

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

impl Default for PathArguments

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

impl Default for Limits

impl<'a> Default for VariationAxes<'a>

impl<'a> Default for Subtable<'a>

impl<'a> Default for Subtables<'a>

impl Default for Names<'_>

impl Default for Weight

impl Default for Width

impl Default for GlyphId

impl<Meta: Default + ObjectMetadata> Default for ObjectMap<Meta>

impl Default for UserDataMap

impl Default for ModifiersState

impl Default for ControlFlow

impl Default for WindowType

impl Default for WindowBuilder

impl Default for WindowAttributes

impl Default for CursorIcon

impl Default for UserAttentionType

impl Default for ClientMessageData

impl Default for XIAddMasterInfo

impl Default for XIRemoveMasterInfo

impl Default for XIAttachSlaveInfo

impl Default for XIDetachSlaveInfo

impl Default for XIAnyHierarchyChangeInfo

impl Default for XIModifierState

impl Default for XIButtonState

impl Default for XIValuatorState

impl Default for XIEventMask

impl Default for XIAnyClassInfo

impl Default for XIButtonClassInfo

impl Default for XIKeyClassInfo

impl Default for XIValuatorClassInfo

impl Default for XIScrollClassInfo

impl Default for XITouchClassInfo

impl Default for XIDeviceInfo

impl Default for XIGrabModifiers

impl Default for XIBarrierReleasePointerInfo

impl Default for XIEvent

impl Default for XIHierarchyInfo

impl Default for XIHierarchyEvent

impl Default for XIDeviceChangedEvent

impl Default for XIDeviceEvent

impl Default for XIRawEvent

impl Default for XIEnterEvent

impl Default for XIPropertyEvent

impl Default for XITouchOwnershipEvent

impl Default for XIBarrierEvent

impl Default for ParserConfig

impl Default for EmitterConfig