autd3capi_driver/
duration.rs1#[derive(Clone, Copy)]
2#[repr(C)]
3pub struct Duration {
4 pub nanos: u64,
5}
6
7impl From<std::time::Duration> for Duration {
8 fn from(d: std::time::Duration) -> Self {
9 Self {
10 nanos: d.as_nanos() as u64,
11 }
12 }
13}
14
15impl From<Duration> for std::time::Duration {
16 fn from(d: Duration) -> Self {
17 Self::from_nanos(d.nanos)
18 }
19}
20
21#[derive(Clone, Copy)]
22#[repr(C)]
23pub struct OptionDuration {
24 pub has_value: bool,
25 pub value: Duration,
26}
27
28impl OptionDuration {
29 pub const NONE: Self = Self {
30 has_value: false,
31 value: Duration { nanos: 0 },
32 };
33}
34
35impl From<OptionDuration> for Option<std::time::Duration> {
36 fn from(d: OptionDuration) -> Self {
37 if d.has_value {
38 Some(d.value.into())
39 } else {
40 None
41 }
42 }
43}
44
45impl From<Option<std::time::Duration>> for OptionDuration {
46 fn from(d: Option<std::time::Duration>) -> Self {
47 match d {
48 Some(d) => Self {
49 has_value: true,
50 value: d.into(),
51 },
52 None => Self::NONE,
53 }
54 }
55}