diff options
author | Aleksey Kladov <[email protected]> | 2021-06-15 20:49:00 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2021-06-15 20:49:00 +0100 |
commit | 3efe5c3426a311b6d617f9718b82e9a598dfa06d (patch) | |
tree | 261a0436ebf1192644ce398144d005e767326fbc /crates/test_utils | |
parent | 2eef66a2ed9b02962511e38c620efb23e2d65b00 (diff) |
internal: add future to minicore
Diffstat (limited to 'crates/test_utils')
-rw-r--r-- | crates/test_utils/src/minicore.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/test_utils/src/minicore.rs b/crates/test_utils/src/minicore.rs index 8c0d122dc..127d06e59 100644 --- a/crates/test_utils/src/minicore.rs +++ b/crates/test_utils/src/minicore.rs | |||
@@ -14,6 +14,8 @@ | |||
14 | //! unsize: sized | 14 | //! unsize: sized |
15 | //! deref: sized | 15 | //! deref: sized |
16 | //! coerce_unsized: unsize | 16 | //! coerce_unsized: unsize |
17 | //! pin: | ||
18 | //! future: pin | ||
17 | 19 | ||
18 | pub mod marker { | 20 | pub mod marker { |
19 | // region:sized | 21 | // region:sized |
@@ -113,6 +115,41 @@ pub mod slice { | |||
113 | } | 115 | } |
114 | // endregion:slice | 116 | // endregion:slice |
115 | 117 | ||
118 | // region:pin | ||
119 | pub mod pin { | ||
120 | #[lang = "pin"] | ||
121 | #[fundamental] | ||
122 | pub struct Pin<P> { | ||
123 | pointer: P, | ||
124 | } | ||
125 | } | ||
126 | // endregion:pin | ||
127 | |||
128 | // region:future | ||
129 | pub mod future { | ||
130 | use crate::{pin::Pin, task::{Poll, Context}}; | ||
131 | |||
132 | #[lang = "future_trait"] | ||
133 | pub trait Future { | ||
134 | type Output; | ||
135 | #[lang = "poll"] | ||
136 | fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>; | ||
137 | } | ||
138 | } | ||
139 | pub mod task { | ||
140 | pub enum Poll<T> { | ||
141 | #[lang = "Ready"] | ||
142 | Ready(T), | ||
143 | #[lang = "Pending"] | ||
144 | Pending, | ||
145 | } | ||
146 | |||
147 | pub struct Context<'a> { | ||
148 | waker: &'a (), | ||
149 | } | ||
150 | } | ||
151 | // endregion:future | ||
152 | |||
116 | pub mod prelude { | 153 | pub mod prelude { |
117 | pub mod v1 { | 154 | pub mod v1 { |
118 | pub use crate::marker::Sized; // :sized | 155 | pub use crate::marker::Sized; // :sized |