# SystemClock
*Requires features `time` and `std`.*
A monotonic system clock that measures elapsed time since creation.
Appropriate for deadlines and timeouts in production.
## Construction
```rust
use ready_active_safe::time::{Clock, SystemClock};
let clock = SystemClock::new();
let now = clock.now();
assert!(now.as_nanos() < 1_000_000_000); // less than 1s since creation
```
## `Default`
`SystemClock` implements `Default`, so it works with `..Default::default()`:
```rust
use ready_active_safe::time::{Clock, SystemClock};
let clock = SystemClock::default();
let _now = clock.now();
```
## Monotonic
Successive calls to `now()` never go backward:
```rust
use ready_active_safe::time::{Clock, SystemClock};
let clock = SystemClock::new();
let a = clock.now();
let b = clock.now();
assert!(b >= a);
```
## See Also
- [`Clock`](clock.md) — the trait `SystemClock` implements
- [`ManualClock`](manual_clock.md) — deterministic alternative for tests