//! Trait implementations for a few atomic types use crate::traits::*; use taskchampion::chrono::prelude::*; impl PassByValue for usize { type RustType = usize; unsafe fn from_ctype(self) -> usize { self } fn as_ctype(arg: usize) -> usize { arg } } /// Convert an Option> to a libc::time_t, or zero if not set. impl PassByValue for libc::time_t { type RustType = Option>; unsafe fn from_ctype(self) -> Option> { if self == 0 { None } else { Some(Utc.timestamp(self as i64, 0)) } } fn as_ctype(arg: Option>) -> libc::time_t { arg.map(|ts| ts.timestamp() as libc::time_t) .unwrap_or(0 as libc::time_t) } }