Schedule an one-shot of the task. Note that this `fire_oneshot` requires a `'static` lifetime closure.
# Arguments
* `due`: Due time to execute the task
* `hint`: Behavior hint of `handler`, which impacts how the task will be scheduled
* `handler`: The task to be called back
returns: Result<(), [`TimerError`]>
# Examples
This example creates a new `TimerQueue` to show that the lifetime of the queue is irrelevant. But in actual usage, you
can simply use [`TimerQueue::default`].
```rust
# use std::sync::{Arc, atomic::{AtomicBool, Ordering}};
# use std::thread;
# use std::time::Duration;
use native_timer::TimerQueue;
let flag = Arc::new(AtomicBool::new(false));
let flag_writer = flag.clone();
TimerQueue::new().fire_oneshot(Duration::from_millis(100),
None, move || flag_writer.store(true, Ordering::SeqCst)).unwrap();
thread::sleep(Duration::from_millis(200));
assert!(flag.load(Ordering::SeqCst));
```