realsense_rust/kind/
timestamp_domain.rs1use num_derive::{FromPrimitive, ToPrimitive};
7use realsense_sys as sys;
8use std::{ffi::CStr, fmt::Display};
9
10#[repr(i32)]
12#[derive(FromPrimitive, ToPrimitive, Debug, Clone, Copy, PartialEq, Eq, Hash)]
13pub enum Rs2TimestampDomain {
14 HardwareClock = sys::rs2_timestamp_domain_RS2_TIMESTAMP_DOMAIN_HARDWARE_CLOCK as i32,
16 SystemTime = sys::rs2_timestamp_domain_RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME as i32,
18 GlobalTime = sys::rs2_timestamp_domain_RS2_TIMESTAMP_DOMAIN_GLOBAL_TIME as i32,
23 }
27
28impl Rs2TimestampDomain {
29 pub fn as_cstr(&self) -> &'static CStr {
31 unsafe {
32 let ptr = sys::rs2_timestamp_domain_to_string(*self as sys::rs2_timestamp_domain);
33 CStr::from_ptr(ptr)
34 }
35 }
36
37 pub fn as_str(&self) -> &'static str {
39 self.as_cstr().to_str().unwrap()
40 }
41}
42
43impl Display for Rs2TimestampDomain {
44 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
45 write!(f, "{}", self.as_str())
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52 use num_traits::FromPrimitive;
53
54 #[test]
55 fn all_variants_exist() {
56 for i in 0..sys::rs2_timestamp_domain_RS2_TIMESTAMP_DOMAIN_COUNT as i32 {
57 assert!(
58 Rs2TimestampDomain::from_i32(i).is_some(),
59 "Rs2TimestampDomain variant for ordinal {} does not exist.",
60 i,
61 );
62 }
63 }
64}