summaryrefslogtreecommitdiffstats
path: root/library/alloc/src/collections/btree/borrow/tests.rs
blob: 56a8434fc71e67be57337346419d33caf0605a6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use super::DormantMutRef;

#[test]
fn test_borrow() {
    let mut data = 1;
    let mut stack = vec![];
    let mut rr = &mut data;
    for factor in [2, 3, 7].iter() {
        let (r, dormant_r) = DormantMutRef::new(rr);
        rr = r;
        assert_eq!(*rr, 1);
        stack.push((factor, dormant_r));
    }
    while let Some((factor, dormant_r)) = stack.pop() {
        let r = unsafe { dormant_r.awaken() };
        *r *= factor;
    }
    assert_eq!(data, 42);
}