Skip to content

Commit 13d58c3

Browse files
committed
Add std re-exports and prelude
1 parent d2b0120 commit 13d58c3

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed

src/lib.rs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,84 @@
11
#![no_std]
2+
#![feature(alloc)]
3+
#![feature(core_intrinsics)]
4+
#![feature(prelude_import)]
5+
#![feature(raw)]
6+
#![feature(slice_concat_ext)]
27

8+
/* This section was addapted from the Rust Standard Library, and is licensed accordingly
9+
* https://github.com/rust-lang/rust/blob/master/src/libstd/lib.rs
10+
* {
11+
*/
12+
13+
// Explicitly import the prelude. The compiler uses this same unstable attribute
14+
// to import the prelude implicitly when building crates that depend on std.
15+
#[prelude_import]
16+
#[allow(unused)]
17+
use prelude::*;
18+
19+
// Re-export a few macros from core
20+
pub use core::{assert_eq, assert_ne, debug_assert, debug_assert_eq, debug_assert_ne};
21+
pub use core::{unreachable, unimplemented, write, writeln, r#try};
22+
23+
#[allow(unused_imports)]
24+
#[macro_use]
25+
extern crate alloc as alloc_crate;
26+
27+
// The standard macros that are not built-in to the compiler.
328
#[macro_use]
429
mod macros;
530

31+
// The Rust prelude
32+
pub mod prelude;
33+
34+
// Public module declarations and re-exports
35+
pub use core::any;
36+
pub use core::arch;
37+
pub use core::cell;
38+
pub use core::clone;
39+
pub use core::cmp;
40+
pub use core::convert;
41+
pub use core::default;
42+
pub use core::hash;
43+
pub use core::intrinsics;
44+
pub use core::iter;
45+
pub use core::marker;
46+
pub use core::mem;
47+
pub use core::ops;
48+
pub use core::ptr;
49+
pub use core::raw;
50+
pub use core::result;
51+
pub use core::option;
52+
pub use core::isize;
53+
pub use core::i8;
54+
pub use core::i16;
55+
pub use core::i32;
56+
pub use core::i64;
57+
pub use core::i128;
58+
pub use core::usize;
59+
pub use core::u8;
60+
pub use core::u16;
61+
pub use core::u32;
62+
pub use core::u64;
63+
pub use alloc_crate::boxed;
64+
pub use alloc_crate::rc;
65+
pub use alloc_crate::borrow;
66+
pub use alloc_crate::fmt;
67+
pub use alloc_crate::format;
68+
pub use core::pin;
69+
pub use alloc_crate::slice;
70+
pub use alloc_crate::str;
71+
pub use alloc_crate::string;
72+
pub use alloc_crate::vec;
73+
pub use core::char;
74+
pub use core::u128;
75+
pub use core::hint;
76+
77+
/* } */
78+
79+
pub use uefi;
80+
pub use uefi_alloc;
81+
682
pub mod io;
783
pub mod math;
884
pub mod rt;

src/prelude.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/* This section was addapted from the Rust Standard Library, and is licensed accordingly
2+
* https://raw.githubusercontent.com/rust-lang/rust/master/src/libstd/prelude/v1.rs
3+
* {
4+
*/
5+
6+
// Re-exported core operators
7+
#[doc(no_inline)]
8+
pub use crate::marker::{Copy, Send, Sized, Sync, Unpin};
9+
#[doc(no_inline)]
10+
pub use crate::ops::{Drop, Fn, FnMut, FnOnce};
11+
12+
// Re-exported functions
13+
#[doc(no_inline)]
14+
pub use crate::mem::drop;
15+
16+
// Re-exported types and traits
17+
#[doc(no_inline)]
18+
pub use crate::clone::Clone;
19+
#[doc(no_inline)]
20+
pub use crate::cmp::{PartialEq, PartialOrd, Eq, Ord};
21+
#[doc(no_inline)]
22+
pub use crate::convert::{AsRef, AsMut, Into, From};
23+
#[doc(no_inline)]
24+
pub use crate::default::Default;
25+
#[doc(no_inline)]
26+
pub use crate::iter::{Iterator, Extend, IntoIterator};
27+
#[doc(no_inline)]
28+
pub use crate::iter::{DoubleEndedIterator, ExactSizeIterator};
29+
#[doc(no_inline)]
30+
pub use crate::option::Option::{self, Some, None};
31+
#[doc(no_inline)]
32+
pub use crate::result::Result::{self, Ok, Err};
33+
34+
35+
// The file so far is equivalent to src/libcore/prelude/v1.rs,
36+
// and below to src/liballoc/prelude.rs.
37+
// Those files are duplicated rather than using glob imports
38+
// because we want docs to show these re-exports as pointing to within `std`.
39+
40+
41+
#[doc(no_inline)]
42+
pub use crate::boxed::Box;
43+
#[doc(no_inline)]
44+
pub use crate::borrow::ToOwned;
45+
#[doc(no_inline)]
46+
pub use crate::slice::SliceConcatExt;
47+
#[doc(no_inline)]
48+
pub use crate::string::{String, ToString};
49+
#[doc(no_inline)]
50+
pub use crate::vec::Vec;
51+
52+
/* } */

0 commit comments

Comments
 (0)