Module mem
Basic functions for dealing with memory, values, and types.
The contents of this module can be seen as belonging to a few families:
-
drop,replace,swap, andtakeare safe functions for moving values in particular ways. They are useful in everyday Rust code. -
size_of,size_of_val,align_of,align_of_val, andoffset_ofgive information about the representation of values in memory. -
discriminantallows comparing the variants ofenumvalues while ignoring their fields. -
forgetandManuallyDropprevent destructors from running, which is used in certain kinds of ownership transfer.needs_droptells you whether a type’s destructor even does anything. -
transmute,transmute_copy, andMaybeUninitconvert and construct values inunsafeways.
See also the alloc and ptr modules for more primitive operations on memory.
Modules
- type_info MVP for exposing compile-time information about types in a runtime or const-eval processable way.
Structs
-
Alignment
A type storing a
usizewhich is a power of two, and thus represents a possible alignment in the Rust abstract machine. -
Assume
Configurable proof assumptions of
TransmuteFrom. - Discriminant Opaque type representing the discriminant of an enum.
- DropGuard Wrap a value and run a closure when dropped.
-
ManuallyDrop
A wrapper to inhibit the compiler from automatically calling
T’s destructor. This wrapper is 0-cost. - MaybeDangling Allows wrapped [references] and [boxes] to dangle.
Unions
-
MaybeUninit
A wrapper type to construct uninitialized instances of
T.
Traits
-
TransmuteFrom
Marks that
Srcis transmutable intoSelf.
Functions
- align_of Returns the [ABI]-required minimum alignment of a type in bytes.
-
align_of_val
Returns the [ABI]-required minimum alignment of the type of the value that
valpoints to in bytes. -
align_of_val_raw
Returns the [ABI]-required minimum alignment of the type of the value that
valpoints to in bytes. -
conjure_zst
Create a fresh instance of the inhabited ZST type
T. - copy Bitwise-copies a value.
-
discriminant
Returns a value uniquely identifying the enum variant in
v. - drop Disposes of a value.
- forget Takes ownership and "forgets" about the value without running its destructor.
-
forget_unsized
Like
forget, but also accepts unsized values. - min_align_of Returns the [ABI]-required minimum alignment of a type in bytes.
-
min_align_of_val
Returns the [ABI]-required minimum alignment of the type of the value that
valpoints to in bytes. -
needs_drop
Returns
trueif dropping values of typeTmatters. -
replace
Moves
srcinto the referenceddest, returning the previousdestvalue. - size_of Returns the size of a type in bytes.
- size_of_val Returns the size of the pointed-to value in bytes.
- size_of_val_raw Returns the size of the pointed-to value in bytes.
- swap Swaps the values at two mutable locations, without deinitializing either one.
-
take
Replaces
destwith the default value ofT, returning the previousdestvalue. - transmute Reinterprets the bits of a value of one type as another type.
-
transmute_copy
Interprets
srcas having type&Dst, and then readssrcwithout moving the contained value. -
uninitialized
Bypasses Rust's normal memory-initialization checks by pretending to
produce a value of type
T, while doing nothing at all. -
variant_count
Returns the number of variants in the enum type
T. -
zeroed
Returns the value of type
Trepresented by the all-zero byte-pattern.
Macros
- offset_of Expands to the offset in bytes of a field from the beginning of the given type.