Alioth Code Coverage

clock.rs100.00%

1// Copyright 2026 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use std::fmt::Debug;
16use std::time::{Duration, SystemTime, UNIX_EPOCH};
17
18pub trait Clock: Debug + Send + Sync + 'static {
19 fn now(&self) -> Duration;
20}
21
22#[derive(Debug)]
23pub struct SystemClock;
24
25impl Clock for SystemClock {
26 fn now(&self) -> Duration {3x
27 SystemTime::now()3x
28 .duration_since(UNIX_EPOCH)3x
29 .unwrap_or_default()3x
30 }3x
31}
32
33#[cfg(test)]
34#[path = "clock_test.rs"]
35pub mod tests;
36