Skip to main content

nil_server_types/
time.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use derive_more::{From, Into};
5use serde::{Deserialize, Serialize};
6use std::time::Duration;
7
8#[derive(
9  Clone, Copy, Debug, Default, From, Into, PartialEq, Eq, PartialOrd, Ord, Deserialize, Serialize,
10)]
11pub struct Minutes(u64);
12
13impl Minutes {
14  pub const fn new(mins: u64) -> Self {
15    Self(mins)
16  }
17}
18
19impl From<Duration> for Minutes {
20  fn from(duration: Duration) -> Self {
21    Self(duration.as_secs() / 60)
22  }
23}
24
25impl From<Minutes> for Duration {
26  fn from(value: Minutes) -> Self {
27    Duration::from_mins(value.0)
28  }
29}