# Module std::prelude 1.0.0 [−] [src]

The Rust Prelude.

Rust comes with a variety of things in its standard library. However, if you had to manually import every single thing that you used, it would be very verbose. But importing a lot of things that a program never uses isn't good either. A balance needs to be struck.

The prelude is the list of things that Rust automatically imports into every Rust program. It's kept as small as possible, and is focused on things, particularly traits, which are used in almost every single Rust program.

On a technical level, Rust inserts

fn main() { extern crate std; }

    extern crate std;

into the crate root of every crate, and

fn main() { use std::prelude::v1::*; }

    use std::prelude::v1::*;

into every module.

# Other preludes

Preludes can be seen as a pattern to make using multiple types more convenient. As such, you'll find other preludes in the standard library, such as `std::io::prelude`. Various libraries in the Rust ecosystem may also define their own preludes.

The difference between 'the prelude' and these other preludes is that they are not automatically `use`'d, and must be imported manually. This is still easier than importing all of their constituent components.

# Prelude contents

The current version of the prelude (version 1) lives in `std::prelude::v1`, and reexports the following.

- `std::marker`::{`Copy`, `Send`, `Sized`, `Sync`}. The marker traits indicate fundamental properties of types.
- `std::ops`::{`Drop`, `Fn`, `FnMut`, `FnOnce`}. Various operations for both destructors and overloading `()`.
- `std::mem`::`drop`, a convenience function for explicitly dropping a value.
- `std::boxed`::`Box`, a way to allocate values on the heap.
- `std::borrow`::`ToOwned`, The conversion trait that defines `to_owned()`, the generic method for creating an owned type from a borrowed type.
- `std::clone`::`Clone`, the ubiquitous trait that defines `clone()`, the method for producing a copy of a value.
- `std::cmp`::{`PartialEq`, `PartialOrd`, `Eq`, `Ord` }. The comparison traits, which implement the comparison operators and are often seen in trait bounds.
- `std::convert`::{`AsRef`, `AsMut`, `Into`, `From`}. Generic conversions, used by savvy API authors to create overloaded methods.
- `std::default`::`Default`, types that have default values.
- `std::iter`::{`Iterator`, `Extend`, `IntoIterator`, `DoubleEndedIterator`, `ExactSizeIterator`}. Iterators of various kinds.
- `std::option`::`Option`::{`self`, `Some`, `None`}. A type which expresses the presence or absence of a value. This type is so commonly used, its variants are also exported.
- `std::result`::`Result`::{`self`, `Ok`, `Err`}. A type for functions that may succeed or fail. Like `Option`, its variants are exported as well.
- `std::slice`::`SliceConcatExt`, a trait that exists for technical reasons, but shouldn't have to exist. It provides a few useful methods on slices.
- `std::string`::{`String`, `ToString`}, heap allocated strings.
- `std::vec`::`Vec`, a growable, heap-allocated vector.

## Modules

v1 | The first version of the prelude of The Rust Standard Library.

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)