Trait sgx_tstd::default::Default

1.0.0 · source ·
pub trait Default: Sized {
    // Required method
    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.

enums

When using #[derive(Default)] on an enum, you need to choose which unit variant will be default. You do this by placing the #[default] attribute on the variant.

#[derive(Default)]
enum Kind {
    #[default]
    A,
    B,
    C,
}

You cannot use the #[default] attribute on non-unit or non-exhaustive variants.

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§

source

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.

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 }
}

Object Safety§

This trait is not object safe.

Implementors§

source§

impl Default for &str

1.10.0 · source§

impl Default for &CStr

source§

impl Default for &OsStr

1.28.0 · source§

impl Default for &mut str

source§

impl Default for MapAddr

source§

impl Default for FutexClockId

source§

impl Default for FutexOp

source§

impl Default for PageType

source§

impl Default for Feature

source§

impl Default for Version

source§

impl Default for ExceptionType

source§

impl Default for ExceptionVector

source§

impl Default for HandleResult

source§

impl Default for PceError

source§

impl Default for QcnlError

source§

impl Default for Quote3Error

source§

impl Default for SgxStatus

source§

impl Default for DirIndex

source§

impl Default for EcResult

source§

impl Default for RsaKeyType

source§

impl Default for RsaResult

source§

impl Default for PckCertFlag

source§

impl Default for ProdType

source§

impl Default for QeType

source§

impl Default for QlAttestationAlgorithmId

source§

impl Default for QlCertKeyType

source§

impl Default for QlConfigVersion

source§

impl Default for QlLogLevel

source§

impl Default for QlPathType

source§

impl Default for QlQvResult

source§

impl Default for QlRequestPolicy

source§

impl Default for QvPathType

source§

impl Default for DhSessionRole

source§

impl Default for EnclaveMode

source§

impl Default for KeyName

source§

impl Default for ProtectPerm

source§

impl Default for RaKeyType

source§

impl Default for QuoteSignType

source§

impl Default for SwitchlessWokerEvent

source§

impl Default for SwitchlessWokerType

source§

impl Default for SgxDeviceStatus

source§

impl Default for TcsPolicy

source§

impl Default for bool

source§

impl Default for char

source§

impl Default for f32

source§

impl Default for f64

source§

impl Default for i8

source§

impl Default for i16

source§

impl Default for i32

source§

impl Default for i64

source§

impl Default for i128

source§

impl Default for isize

source§

impl Default for u8

source§

impl Default for u16

source§

impl Default for u32

source§

impl Default for u64

source§

impl Default for u128

source§

impl Default for ()

source§

impl Default for usize

source§

impl Default for AlignReq

source§

impl Default for CpuidResult

source§

impl Default for AddrInfoHints

source§

impl Default for MsgHdrFlags

source§

impl Default for sgx_sync::condvar::Condvar

source§

impl Default for FutexFlags

source§

impl Default for MovableMutex

source§

impl Default for MovableRwLock

source§

impl Default for PageFlags

source§

impl Default for PageInfo

source§

impl Default for Rng

source§

impl Default for AlignKeyRequest

source§

impl Default for AlignReport2Mac

source§

impl Default for AlignReport

source§

impl Default for AlignReportData

source§

impl Default for AlignTargetInfo

source§

impl Default for CpuContext

source§

impl Default for ExceptionInfo

source§

impl Default for CssBody

source§

impl Default for CssBuffer

source§

impl Default for CssHeader

source§

impl Default for CssKey

source§

impl Default for DataDir

source§

impl Default for MetaData

source§

impl Default for AlignEc256PrivateKey

source§

impl Default for AlignEc256SharedKey

source§

impl Default for AlignKey128bit

source§

impl Default for AlignKey256bit

source§

impl Default for AlignMac128bit

source§

impl Default for AlignMac256bit

source§

impl Default for Ec256PrivateKey

source§

impl Default for Ec256PublicKey

source§

impl Default for Ec256SharedKey

source§

impl Default for Ec256Signature

source§

impl Default for Rsa2048Key

source§

impl Default for Rsa2048Param

source§

impl Default for Rsa2048PrivKey

source§

impl Default for Rsa2048PubKey

source§

impl Default for Rsa2048Signature

source§

impl Default for Rsa3072Key

source§

impl Default for Rsa3072Param

source§

impl Default for Rsa3072PrivKey

source§

impl Default for Rsa3072PubKey

source§

impl Default for Rsa3072Signature

source§

impl Default for Sha1Hash

source§

impl Default for Sha256Hash

source§

impl Default for Sha384Hash

source§

impl Default for Sm3Hash

source§

impl Default for PceInfo

source§

impl Default for QlAuthData

source§

impl Default for QlCertificationData

source§

impl Default for QlEcdsaSigData

source§

impl Default for QlPPIDRsa3072EncryptedCertInfo

source§

impl Default for QlQe3Id

source§

impl Default for QlQeReportInfo

source§

impl Default for QlQvSupplemental

source§

impl Default for QlQveCollateralParam

source§

impl Default for Quote3

source§

impl Default for QuoteHeader

source§

impl Default for CDhMsg1

source§

impl Default for CDhMsg2

source§

impl Default for CDhMsg3

source§

impl Default for CDhMsg3Body

source§

impl Default for CDhSession

source§

impl Default for CEnclaveIdentity

source§

impl Default for CRaMsg1

source§

impl Default for CRaMsg2

source§

impl Default for CRaMsg3

source§

impl Default for PsSecPropDesc

source§

impl Default for AttKeyId

source§

impl Default for AttKeyIdExt

source§

impl Default for BaseName

source§

impl Default for PlatformInfo

source§

impl Default for QeReportInfo

source§

impl Default for QlAttKeyId

source§

impl Default for Quote

source§

impl Default for QuoteNonce

source§

impl Default for Spid

source§

impl Default for UpdateInfoBit

source§

impl Default for CDcapMRaMsg2

source§

impl Default for CDcapRaMsg1

source§

impl Default for CDcapRaMsg3

source§

impl Default for CDcapURaMsg2

source§

impl Default for EnclaveIdentity

source§

impl Default for timespec

source§

impl Default for Report2

source§

impl Default for Report2Mac

source§

impl Default for TeeAttributes

source§

impl Default for TeeCpuSvn

source§

impl Default for TeeMeasurement

source§

impl Default for TeeReportData

source§

impl Default for TeeReportType

source§

impl Default for CAesGcmData

source§

impl Default for CSealedData

source§

impl Default for Attributes

source§

impl Default for AttributesFlags

source§

impl Default for ConfigId

source§

impl Default for CpuSvn

source§

impl Default for KeyId

source§

impl Default for KeyPolicy

source§

impl Default for KeyRequest

source§

impl Default for Measurement

source§

impl Default for MiscAttribute

source§

impl Default for MiscSelect

source§

impl Default for Report

source§

impl Default for ReportBody

source§

impl Default for ReportData

source§

impl Default for TargetInfo

source§

impl Default for SwitchlessConfig

source§

impl Default for SwitchlessWokerStats

source§

impl Default for EcdsaSigDataV4

source§

impl Default for QeReportCertificationData

source§

impl Default for Quote4

source§

impl Default for Quote4Header

source§

impl Default for Report2Body

source§

impl Default for TeeInfo

source§

impl Default for TeeTcbInfo

source§

impl Default for TeeTcbSvn

source§

impl Default for KssConfig

source§

impl Default for Global

1.17.0 · source§

impl Default for Box<str>

1.17.0 · source§

impl Default for Box<CStr>

source§

impl Default for Box<OsStr>

source§

impl Default for DefaultHasher

source§

impl Default for RandomState

1.10.0 · source§

impl Default for CString

source§

impl Default for OsString

source§

impl Default for Error

source§

impl Default for SipHasher

source§

impl Default for sgx_tstd::io::Empty

source§

impl Default for Sink

1.33.0 · source§

impl Default for PhantomPinned

source§

impl Default for RangeFull

source§

impl Default for PathBuf

source§

impl Default for String

source§

impl Default for AtomicBool

1.34.0 · source§

impl Default for AtomicI8

1.34.0 · source§

impl Default for AtomicI16

1.34.0 · source§

impl Default for AtomicI32

1.34.0 · source§

impl Default for AtomicI64

source§

impl Default for AtomicIsize

1.34.0 · source§

impl Default for AtomicU8

1.34.0 · source§

impl Default for AtomicU16

1.34.0 · source§

impl Default for AtomicU32

1.34.0 · source§

impl Default for AtomicU64

source§

impl Default for AtomicUsize

source§

impl Default for sgx_tstd::sync::Condvar

1.3.0 · source§

impl Default for Duration

source§

impl Default for FileTimes

1.70.0 · source§

impl<'a, K, V> Default for sgx_tstd::collections::btree_map::Iter<'a, K, V>where K: 'a, V: 'a,

1.70.0 · source§

impl<'a, K, V> Default for sgx_tstd::collections::btree_map::IterMut<'a, K, V>where K: 'a, V: 'a,

1.70.0 · source§

impl<A, B> Default for Chain<A, B>where A: Default, B: Default,

1.11.0 · source§

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

1.7.0 · source§

impl<H> Default for BuildHasherDefault<H>

1.70.0 · source§

impl<I> Default for Cloned<I>where I: Default,

1.70.0 · source§

impl<I> Default for Copied<I>where I: Default,

1.70.0 · source§

impl<I> Default for Enumerate<I>where I: Default,

1.70.0 · source§

impl<I> Default for Flatten<I>where I: Default + Iterator, <I as Iterator>::Item: IntoIterator,

1.70.0 · source§

impl<I> Default for Fuse<I>where I: Default,

1.70.0 · source§

impl<I> Default for Rev<I>where I: Default,

source§

impl<Idx> Default for sgx_tstd::ops::Range<Idx>where Idx: Default,

1.70.0 · source§

impl<K, V> Default for Keys<'_, K, V>

1.70.0 · source§

impl<K, V> Default for sgx_tstd::collections::btree_map::Range<'_, K, V>

1.70.0 · source§

impl<K, V> Default for Values<'_, K, V>

source§

impl<K, V> Default for BTreeMap<K, V>

1.70.0 · source§

impl<K, V, A> Default for sgx_tstd::collections::btree_map::IntoIter<K, V, A>where A: Allocator + Default + Clone,

1.70.0 · source§

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

1.70.0 · source§

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

source§

impl<K, V, S> Default for sgx_tstd::collections::hash_map::HashMap<K, V, S>where S: Default,

source§

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

source§

impl<T> Default for &[T]

1.5.0 · source§

impl<T> Default for &mut [T]

source§

impl<T> Default for Option<T>

1.4.0 · source§

impl<T> Default for [T; 0]

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

impl<T> Default for [T; 10]where T: Default,

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

1.4.0 · source§

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

source§

impl<T> Default for (T₁, T₂, …, Tₙ)where T: Default,

This trait is implemented for tuples up to twelve items long.

source§

impl<T> Default for sgx_sync::lazy_lock::LazyLock<T>where T: Default,

source§

impl<T> Default for sgx_sync::once_lock::OnceLock<T>

source§

impl<T> Default for SpinMutex<T>where T: Default + ?Sized,

source§

impl<T> Default for SpinReentrantMutex<T>where T: Default + ?Sized,

source§

impl<T> Default for SpinRwLock<T>where T: Default + ?Sized,

source§

impl<T> Default for Box<[T]>

source§

impl<T> Default for Box<T>where T: Default,

source§

impl<T> Default for Cell<T>where T: Default,

source§

impl<T> Default for LazyCell<T>where T: Default,

1.70.0 · source§

impl<T> Default for OnceCell<T>

source§

impl<T> Default for RefCell<T>where T: Default,

source§

impl<T> Default for SyncUnsafeCell<T>where T: Default,

1.10.0 · source§

impl<T> Default for UnsafeCell<T>where T: Default,

1.19.0 · source§

impl<T> Default for Reverse<T>where T: Default,

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::binary_heap::IntoIter<T>

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::btree_set::Iter<'_, T>

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::btree_set::Range<'_, T>

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::linked_list::IntoIter<T>

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::linked_list::Iter<'_, T>

1.70.0 · source§

impl<T> Default for sgx_tstd::collections::linked_list::IterMut<'_, T>

source§

impl<T> Default for BTreeSet<T>

source§

impl<T> Default for BinaryHeap<T>where T: Ord,

source§

impl<T> Default for LinkedList<T>

source§

impl<T> Default for VecDeque<T>

1.2.0 · source§

impl<T> Default for sgx_tstd::iter::Empty<T>

source§

impl<T> Default for PhantomData<T>where T: ?Sized,

1.20.0 · source§

impl<T> Default for ManuallyDrop<T>where T: Default + ?Sized,

source§

impl<T> Default for Wrapping<T>where T: Default,

1.62.0 · source§

impl<T> Default for AssertUnwindSafe<T>where T: Default,

source§

impl<T> Default for Rc<T>where T: Default,

1.10.0 · source§

impl<T> Default for sgx_tstd::rc::Weak<T>

1.70.0 · source§

impl<T> Default for sgx_tstd::slice::Iter<'_, T>

1.70.0 · source§

impl<T> Default for sgx_tstd::slice::IterMut<'_, T>

source§

impl<T> Default for AtomicPtr<T>

source§

impl<T> Default for Arc<T>where T: Default,

source§

impl<T> Default for Exclusive<T>where T: Default + ?Sized,

source§

impl<T> Default for sgx_tstd::sync::OnceLock<T>

1.10.0 · source§

impl<T> Default for sgx_tstd::sync::Weak<T>

source§

impl<T> Default for Vec<T>

1.74.0 · source§

impl<T> Default for Saturating<T>where T: Default,

source§

impl<T, A> Default for HashTable<T, A>where A: Allocator + Default,

1.70.0 · source§

impl<T, A> Default for sgx_tstd::collections::btree_set::IntoIter<T, A>where A: Allocator + Default + Clone,

1.70.0 · source§

impl<T, A> Default for sgx_tstd::vec::IntoIter<T, A>where A: Allocator + Default,

source§

impl<T, S> Default for sgx_tstd::collections::hash_set::HashSet<T, S>where S: Default,

source§

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

source§

impl<T, const LANES: usize> Default for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

source§

impl<T, const N: usize> Default for Simd<T, N>where LaneCount<N>: SupportedLaneCount, T: SimdElement + Default,

source§

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

source§

impl<T: Default> Default for sgx_tstd::sync::LazyLock<T>

source§

impl<T: Default> Default for RwLock<T>

source§

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