cyccnt::Instant: simplify the Send / Sync impl

originally the type was made `!Send` because it loses its meaning when
send from one core to another but that was an incorrect use of the `Send`
bound (the send operation makes the value incorrect but that doesn't cause
memory unsafety on its own). So later the type was (explicitly) made `Send`
again resulting in a convoluted implementation -- this commit simplifies things.
This commit is contained in:
Jorge Aparicio 2019-10-15 19:12:05 -05:00
parent 6207008884
commit a458a07031

View file

@ -3,9 +3,7 @@
use core::{
cmp::Ordering,
convert::{Infallible, TryInto},
fmt,
marker::PhantomData,
ops,
fmt, ops,
};
use cortex_m::peripheral::DWT;
@ -28,19 +26,13 @@ use crate::Fraction;
#[derive(Clone, Copy, Eq, PartialEq)]
pub struct Instant {
inner: i32,
_not_send_or_sync: PhantomData<*mut ()>,
}
unsafe impl Sync for Instant {}
unsafe impl Send for Instant {}
impl Instant {
/// Returns an instant corresponding to "now"
pub fn now() -> Self {
Instant {
inner: DWT::get_cycle_count() as i32,
_not_send_or_sync: PhantomData,
}
}
@ -222,9 +214,6 @@ impl crate::Monotonic for CYCCNT {
}
fn zero() -> Instant {
Instant {
inner: 0,
_not_send_or_sync: PhantomData,
}
Instant { inner: 0 }
}
}