---
# System prepended metadata

title: Meeting 2022-11-01
tags: [meeting notes]

---

# Meeting 2022-11-01


## Leftover discussion on RCU field projection:

```rust=
fn writer(data: &RcuLock<Mutex<Test>>) {
    let mut guard = data.lock();
    // guard does not give `&mut Test`!
    
    // Use projection to get a mutable reference
    *project!(&mut guard => b) = 10;
    let _: &Rcu = project!(&mut guard => a); // This will only give an immutable reference
    let _: &Rcu = project!(&*data => a); // Still able to get an immutable reference while mutex is locked.
    drop(guard);
    // Read can be done directly
    pr_info!("Value: {}\n", data.lock().b);
}
```

Boqun: Maybe change the grammer to `project!(&mut guard->b)`?

Benno: Doesn't work with a declarative macro. We could use a proc-macro (without syn) however.

Gary: If we have postfix macro this could look like `(&mut guard).proj!(a)`.

## Misc discussion

Miguel: https://lore.kernel.org/lkml/CANiq72nfpdhPgEgWbz2T7C3GOk94mPbcqfvXTp3Lp=qRvtON9g@mail.gmail.com