# Deadline
*Requires feature `time`.*
An expiration point expressed as an [`Instant`](instant.md).
## Construction
```rust
use ready_active_safe::time::{Deadline, Instant};
let deadline = Deadline::at(Instant::from_nanos(5_000_000_000));
assert_eq!(deadline.instant().as_nanos(), 5_000_000_000);
```
## `is_expired`
```rust
use ready_active_safe::time::{Deadline, Instant};
let deadline = Deadline::at(Instant::from_nanos(1_000_000_000));
// Before deadline
assert!(!deadline.is_expired(Instant::from_nanos(500_000_000)));
// Exactly at deadline
assert!(deadline.is_expired(Instant::from_nanos(1_000_000_000)));
// After deadline
assert!(deadline.is_expired(Instant::from_nanos(2_000_000_000)));
```
## Using with a Clock
```rust
use ready_active_safe::time::{Clock, Deadline, Instant, ManualClock};
use std::time::Duration;
let clock = ManualClock::new(Instant::from_nanos(0));
let deadline = Deadline::at(Instant::from_nanos(1_000_000_000));
assert!(!deadline.is_expired(clock.now()));
clock.advance(Duration::from_secs(2));
assert!(deadline.is_expired(clock.now()));
```
## Edge Cases
A deadline at `Instant::from_nanos(0)` is immediately expired:
```rust
use ready_active_safe::time::{Deadline, Instant};
let deadline = Deadline::at(Instant::from_nanos(0));
assert!(deadline.is_expired(Instant::from_nanos(0)));
```
## See Also
- [`Instant`](instant.md) — the underlying time representation
- [`Clock`](clock.md) — provides the "now" to check against
- [`ManualClock`](manual_clock.md) — test-friendly clock for deadline testing