rasi_default/
token.rs

1use mio::Token;
2use std::sync::atomic::{AtomicUsize, Ordering};
3
4/// This trait defines a method for sequential generation of [`token`](Token)s
5///
6/// **Note**: This type is only available on platforms that support atomic loads and stores of usize
7pub trait TokenSequence {
8    /// generate next file description handle.
9    fn next() -> Token {
10        static NEXT: AtomicUsize = AtomicUsize::new(0);
11
12        Token(NEXT.fetch_add(1, Ordering::SeqCst))
13    }
14}
15
16impl TokenSequence for Token {}