Module mutex_prelude

Source
Expand description

Makes locks work on N-tuples, locks the mutexes from left-to-right in the tuple. These are used to reduce rightward drift in code and to help make intentions clearer.

§Example

use rtic_core::prelude::*;

fn normal_lock(
    a: &mut impl Mutex<T = i32>,
    b: &mut impl Mutex<T = i32>,
    c: &mut impl Mutex<T = i32>
) {
    // A lot of rightward drift...
    a.lock(|a| {
        b.lock(|b| {
            c.lock(|c| {
                *a += 1;
                *b += 1;
                *c += 1;
            });
        });
    });
}

Has a shorthand as:

use rtic_core::prelude::*;

fn tuple_lock(
    a: &mut impl Mutex<T = i32>,
    b: &mut impl Mutex<T = i32>,
    c: &mut impl Mutex<T = i32>
) {
    // Look! Single indent and less to write
    (a, b, c).lock(|a, b, c| {
        *a += 1;
        *b += 1;
        *c += 1;
    });
}

Traits§

Mutex
Memory safe access to shared resources
TupleExt01
Auto-generated tuple implementation, see Mutex for details.
TupleExt02
Auto-generated tuple implementation, see Mutex for details.
TupleExt03
Auto-generated tuple implementation, see Mutex for details.
TupleExt04
Auto-generated tuple implementation, see Mutex for details.
TupleExt05
Auto-generated tuple implementation, see Mutex for details.
TupleExt06
Auto-generated tuple implementation, see Mutex for details.
TupleExt07
Auto-generated tuple implementation, see Mutex for details.
TupleExt08
Auto-generated tuple implementation, see Mutex for details.
TupleExt09
Auto-generated tuple implementation, see Mutex for details.
TupleExt10
Auto-generated tuple implementation, see Mutex for details.
TupleExt11
Auto-generated tuple implementation, see Mutex for details.
TupleExt12
Auto-generated tuple implementation, see Mutex for details.
TupleExt13
Auto-generated tuple implementation, see Mutex for details.
TupleExt14
Auto-generated tuple implementation, see Mutex for details.
TupleExt15
Auto-generated tuple implementation, see Mutex for details.
TupleExt16
Auto-generated tuple implementation, see Mutex for details.
TupleExt17
Auto-generated tuple implementation, see Mutex for details.
TupleExt18
Auto-generated tuple implementation, see Mutex for details.
TupleExt19
Auto-generated tuple implementation, see Mutex for details.
TupleExt20
Auto-generated tuple implementation, see Mutex for details.
TupleExt21
Auto-generated tuple implementation, see Mutex for details.
TupleExt22
Auto-generated tuple implementation, see Mutex for details.
TupleExt23
Auto-generated tuple implementation, see Mutex for details.
TupleExt24
Auto-generated tuple implementation, see Mutex for details.
TupleExt25
Auto-generated tuple implementation, see Mutex for details.
TupleExt26
Auto-generated tuple implementation, see Mutex for details.
TupleExt27
Auto-generated tuple implementation, see Mutex for details.
TupleExt28
Auto-generated tuple implementation, see Mutex for details.
TupleExt29
Auto-generated tuple implementation, see Mutex for details.
TupleExt30
Auto-generated tuple implementation, see Mutex for details.
TupleExt31
Auto-generated tuple implementation, see Mutex for details.
TupleExt32
Auto-generated tuple implementation, see Mutex for details.