move contents of taskchampion repo to tc/
This commit is contained in:
34
rust/lib/src/atomic.rs
Normal file
34
rust/lib/src/atomic.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
//! 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<DateTime<Utc>> to a libc::time_t, or zero if not set.
|
||||
impl PassByValue for libc::time_t {
|
||||
type RustType = Option<DateTime<Utc>>;
|
||||
|
||||
unsafe fn from_ctype(self) -> Option<DateTime<Utc>> {
|
||||
if self == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(Utc.timestamp(self as i64, 0))
|
||||
}
|
||||
}
|
||||
|
||||
fn as_ctype(arg: Option<DateTime<Utc>>) -> libc::time_t {
|
||||
arg.map(|ts| ts.timestamp() as libc::time_t)
|
||||
.unwrap_or(0 as libc::time_t)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user