/// A mutable memory location that admits only `Pod` data.
pub struct Cell<T> {
priv value: Unsafe<T>,
- priv marker1: marker::InvariantType<T>,
- priv marker2: marker::NoFreeze,
- priv marker3: marker::NoShare,
+ priv marker1: marker::NoFreeze,
+ priv marker2: marker::NoShare,
}
impl<T:Pod> Cell<T> {
/// Creates a new `Cell` containing the given value.
pub fn new(value: T) -> Cell<T> {
Cell {
- value: Unsafe{value: value, marker1: marker::InvariantType::<T>},
- marker1: marker::InvariantType::<T>,
- marker2: marker::NoFreeze,
- marker3: marker::NoShare,
+ value: Unsafe::new(value),
+ marker1: marker::NoFreeze,
+ marker2: marker::NoShare,
}
}
pub struct RefCell<T> {
priv value: Unsafe<T>,
priv borrow: BorrowFlag,
- priv marker1: marker::InvariantType<T>,
- priv marker2: marker::NoFreeze,
- priv marker3: marker::NoPod,
- priv marker4: marker::NoShare,
+ priv marker1: marker::NoFreeze,
+ priv marker2: marker::NoPod,
+ priv marker3: marker::NoShare,
}
// Values [1, MAX-1] represent the number of `Ref` active
/// Create a new `RefCell` containing `value`
pub fn new(value: T) -> RefCell<T> {
RefCell {
- marker1: marker::InvariantType::<T>,
- marker2: marker::NoFreeze,
- marker3: marker::NoPod,
- marker4: marker::NoShare,
- value: Unsafe{value: value, marker1: marker::InvariantType::<T>},
+ marker1: marker::NoFreeze,
+ marker2: marker::NoPod,
+ marker3: marker::NoShare,
+ value: Unsafe::new(value),
borrow: UNUSED,
}
}