2023-09-21 00:56:59 +00:00
|
|
|
//! Items common to the prelude of all editions.
|
2015-11-11 20:22:23 +00:00
|
|
|
//!
|
2021-02-25 11:41:39 +00:00
|
|
|
//! See the [module-level documentation](super) for more.
|
2014-12-22 17:04:23 +00:00
|
|
|
|
2018-01-12 21:41:25 +00:00
|
|
|
// Re-exported core operators
|
2019-06-20 08:52:31 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
|
|
#[doc(no_inline)]
|
|
|
|
pub use crate::marker::{Send, Sized, Sync, Unpin};
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-02-10 19:23:21 +00:00
|
|
|
pub use crate::ops::{Drop, Fn, FnMut, FnOnce};
|
2015-01-06 23:57:50 +00:00
|
|
|
|
2018-01-12 21:41:25 +00:00
|
|
|
// Re-exported functions
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-02-10 19:23:21 +00:00
|
|
|
pub use crate::mem::drop;
|
Add `size_of`, `size_of_val`, `align_of`, and `align_of_val` to the prelude
Many, many projects use `size_of` to get the size of a type. However,
it's also often equally easy to hardcode a size (e.g. `8` instead of
`size_of::<u64>()`). Minimizing friction in the use of `size_of` helps
ensure that people use it and make code more self-documenting.
The name `size_of` is unambiguous: the name alone, without any prefix or
path, is self-explanatory and unmistakeable for any other functionality.
Adding it to the prelude cannot produce any name conflicts, as any local
definition will silently shadow the one from the prelude. Thus, we don't
need to wait for a new edition prelude to add it.
Add `size_of_val`, `align_of`, and `align_of_val` as well, with similar
justification: widely useful, self-explanatory, unmistakeable for
anything else, won't produce conflicts.
2024-03-28 14:30:32 +00:00
|
|
|
#[stable(feature = "size_of_prelude", since = "CURRENT_RUSTC_VERSION")]
|
|
|
|
#[doc(no_inline)]
|
|
|
|
pub use crate::mem::{align_of, align_of_val, size_of, size_of_val};
|
2014-12-22 17:04:23 +00:00
|
|
|
|
2018-01-12 21:41:25 +00:00
|
|
|
// Re-exported types and traits
|
2015-04-17 21:31:30 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::convert::{AsMut, AsRef, From, Into};
|
2015-04-17 21:31:30 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::iter::{DoubleEndedIterator, ExactSizeIterator};
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::iter::{Extend, IntoIterator, Iterator};
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::option::Option::{self, None, Some};
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::result::Result::{self, Err, Ok};
|
2018-07-07 21:16:27 +00:00
|
|
|
|
2019-06-20 08:52:31 +00:00
|
|
|
// Re-exported built-in macros
|
|
|
|
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
|
2020-04-10 16:34:30 +00:00
|
|
|
#[allow(deprecated)]
|
2019-06-20 08:52:31 +00:00
|
|
|
#[doc(no_inline)]
|
|
|
|
pub use core::prelude::v1::{
|
2021-07-17 18:48:00 +00:00
|
|
|
assert, cfg, column, compile_error, concat, concat_idents, env, file, format_args,
|
2022-01-12 00:00:00 +00:00
|
|
|
format_args_nl, include, include_bytes, include_str, line, log_syntax, module_path, option_env,
|
|
|
|
stringify, trace_macros, Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd,
|
2019-06-20 08:52:31 +00:00
|
|
|
};
|
|
|
|
|
2021-07-29 17:00:55 +00:00
|
|
|
#[unstable(
|
|
|
|
feature = "concat_bytes",
|
|
|
|
issue = "87555",
|
|
|
|
reason = "`concat_bytes` is not stable enough for use and is subject to change"
|
|
|
|
)]
|
|
|
|
#[doc(no_inline)]
|
|
|
|
pub use core::prelude::v1::concat_bytes;
|
|
|
|
|
2021-12-31 12:32:03 +00:00
|
|
|
// Do not `doc(no_inline)` so that they become doc items on their own
|
|
|
|
// (no public module for them to be re-exported from).
|
2022-10-14 01:24:58 +00:00
|
|
|
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
|
2023-04-24 22:08:35 +00:00
|
|
|
pub use core::prelude::v1::{
|
|
|
|
alloc_error_handler, bench, derive, global_allocator, test, test_case,
|
|
|
|
};
|
2020-11-14 11:47:14 +00:00
|
|
|
|
2022-09-20 11:55:07 +00:00
|
|
|
#[unstable(feature = "derive_const", issue = "none")]
|
|
|
|
pub use core::prelude::v1::derive_const;
|
|
|
|
|
2021-12-31 12:32:03 +00:00
|
|
|
// Do not `doc(no_inline)` either.
|
2020-03-09 21:56:20 +00:00
|
|
|
#[unstable(
|
|
|
|
feature = "cfg_accessible",
|
|
|
|
issue = "64797",
|
|
|
|
reason = "`cfg_accessible` is not fully implemented"
|
|
|
|
)]
|
|
|
|
pub use core::prelude::v1::cfg_accessible;
|
|
|
|
|
2021-12-31 12:32:03 +00:00
|
|
|
// Do not `doc(no_inline)` either.
|
2021-03-06 18:33:02 +00:00
|
|
|
#[unstable(
|
|
|
|
feature = "cfg_eval",
|
|
|
|
issue = "82679",
|
|
|
|
reason = "`cfg_eval` is a recently implemented feature"
|
|
|
|
)]
|
|
|
|
pub use core::prelude::v1::cfg_eval;
|
|
|
|
|
2022-11-19 20:27:57 +00:00
|
|
|
// Do not `doc(no_inline)` either.
|
|
|
|
#[unstable(
|
|
|
|
feature = "type_ascription",
|
|
|
|
issue = "23416",
|
|
|
|
reason = "placeholder syntax for type ascription"
|
|
|
|
)]
|
|
|
|
pub use core::prelude::v1::type_ascribe;
|
|
|
|
|
2024-03-20 20:53:50 +00:00
|
|
|
// Do not `doc(no_inline)` either.
|
|
|
|
#[unstable(
|
|
|
|
feature = "deref_patterns",
|
|
|
|
issue = "87121",
|
|
|
|
reason = "placeholder syntax for deref patterns"
|
|
|
|
)]
|
|
|
|
pub use core::prelude::v1::deref;
|
|
|
|
|
2023-01-03 20:37:16 +00:00
|
|
|
// The file so far is equivalent to core/src/prelude/v1.rs. It is duplicated
|
|
|
|
// rather than glob imported because we want docs to show these re-exports as
|
|
|
|
// pointing to within `std`.
|
|
|
|
// Below are the items from the alloc crate.
|
2018-07-07 21:16:27 +00:00
|
|
|
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::borrow::ToOwned;
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-11-27 18:29:00 +00:00
|
|
|
pub use crate::boxed::Box;
|
2015-03-11 04:13:29 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-02-10 19:23:21 +00:00
|
|
|
pub use crate::string::{String, ToString};
|
2015-01-24 05:48:20 +00:00
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
2018-07-07 21:16:27 +00:00
|
|
|
#[doc(no_inline)]
|
2019-02-10 19:23:21 +00:00
|
|
|
pub use crate::vec::Vec;
|