# ppoppo-clock
The time port of the ppoppo ecosystem: one `Clock` ("what time is it?") and
one `Timer` ("wake me in N ms"), injected wherever code needs time, so no
surface reads the ambient system clock directly.
```rust
use ppoppo_clock::ArcClock;
fn stamp(clock: &ArcClock) -> i64 {
clock.now_unix_millis()
}
```
| `native` | `native::{WallClock, TokioTimer, system_tz}` — the Tokio runtime |
| `wasm` | `wasm::{WasmClock, WasmTimer, browser_local_tz}` — the browser event loop |
| `mock` | `mock::{FrozenClock, MockClock, AdvanceableTimer, frozen_at, mock_pair}` — deterministic tests |
With no feature the crate is the two traits and their `Arc` aliases — no
runtime, no IO. The port's value types are [jiff](https://docs.rs/jiff)'s
(`Timestamp`, `Zoned`, `tz::TimeZone`, `civil::Date`), re-exported as
`ppoppo_clock::jiff` so a consumer names one version of them.