summaryrefslogtreecommitdiffstats
path: root/tokio/src/runtime/blocking/schedule.rs
blob: 4e044ab29879609cf91193940f6cea11451e2a7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::runtime::task::{self, Task};

/// `task::Schedule` implementation that does nothing. This is unique to the
/// blocking scheduler as tasks scheduled are not really futures but blocking
/// operations.
///
/// We avoid storing the task by forgetting it in `bind` and re-materializing it
/// in `release.
pub(crate) struct NoopSchedule;

impl task::Schedule for NoopSchedule {
    fn bind(_task: Task<Self>) -> NoopSchedule {
        // Do nothing w/ the task
        NoopSchedule
    }

    fn release(&self, _task: &Task<Self>) -> Option<Task<Self>> {
        None
    }

    fn schedule(&self, _task: task::Notified<Self>) {
        unreachable!();
    }
}