mirror of
https://github.com/servo/servo
synced 2026-04-28 18:37:39 +02:00
42 lines
1.0 KiB
Rust
42 lines
1.0 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use style::atomic_refcell::{AtomicRef, AtomicRefCell};
|
|
|
|
struct Foo {
|
|
u: u32,
|
|
}
|
|
|
|
struct Bar {
|
|
f: Foo,
|
|
}
|
|
|
|
#[test]
|
|
fn map() {
|
|
let a = AtomicRefCell::new(Bar { f: Foo { u: 42 } });
|
|
let b = a.borrow();
|
|
assert_eq!(b.f.u, 42);
|
|
let c = AtomicRef::map(b, |x| &x.f);
|
|
assert_eq!(c.u, 42);
|
|
let d = AtomicRef::map(c, |x| &x.u);
|
|
assert_eq!(*d, 42);
|
|
}
|
|
|
|
/* FIXME(bholley): Enable once we have AtomicRefMut::map(), which is blocked on
|
|
* https://github.com/Kimundi/owning-ref-rs/pull/16
|
|
#[test]
|
|
fn map_mut() {
|
|
let a = AtomicRefCell::new(Bar { f: Foo { u: 42 } });
|
|
let mut b = a.borrow_mut();
|
|
assert_eq!(b.f.u, 42);
|
|
b.f.u = 43;
|
|
let mut c = AtomicRefMut::map(b, |x| &x.f);
|
|
assert_eq!(c.u, 43);
|
|
c.u = 44;
|
|
let mut d = AtomicRefMut::map(c, |x| &x.u);
|
|
assert_eq!(*d, 44);
|
|
*d. = 45;
|
|
assert_eq!(*d, 45);
|
|
}*/
|