mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 21:35:20 +00:00
internal: add future to minicore
This commit is contained in:
parent
2eef66a2ed
commit
3efe5c3426
2 changed files with 39 additions and 12 deletions
|
@ -14,6 +14,8 @@
|
|||
//! unsize: sized
|
||||
//! deref: sized
|
||||
//! coerce_unsized: unsize
|
||||
//! pin:
|
||||
//! future: pin
|
||||
|
||||
pub mod marker {
|
||||
// region:sized
|
||||
|
@ -113,6 +115,41 @@ pub mod slice {
|
|||
}
|
||||
// endregion:slice
|
||||
|
||||
// region:pin
|
||||
pub mod pin {
|
||||
#[lang = "pin"]
|
||||
#[fundamental]
|
||||
pub struct Pin<P> {
|
||||
pointer: P,
|
||||
}
|
||||
}
|
||||
// endregion:pin
|
||||
|
||||
// region:future
|
||||
pub mod future {
|
||||
use crate::{pin::Pin, task::{Poll, Context}};
|
||||
|
||||
#[lang = "future_trait"]
|
||||
pub trait Future {
|
||||
type Output;
|
||||
#[lang = "poll"]
|
||||
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
|
||||
}
|
||||
}
|
||||
pub mod task {
|
||||
pub enum Poll<T> {
|
||||
#[lang = "Ready"]
|
||||
Ready(T),
|
||||
#[lang = "Pending"]
|
||||
Pending,
|
||||
}
|
||||
|
||||
pub struct Context<'a> {
|
||||
waker: &'a (),
|
||||
}
|
||||
}
|
||||
// endregion:future
|
||||
|
||||
pub mod prelude {
|
||||
pub mod v1 {
|
||||
pub use crate::marker::Sized; // :sized
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue