(scl, sda), );
let mut lcd = HD44780::new_i2c(i2c_bus, 39).unwrap();
проблема в том что она забирает себе i2c_bus и его оттуда не достать.
допустим я хочу переписать эту либу чтобы она не владела им а разделяла.
т.е.
let i2c_bus = I2c::new(dp.I2C1, (scl, sda), );
let mut lcd = HD44780::new_i2c(&mut i2c_bus, 39).unwrap();
let mut lcd2 = HD44780::new_i2c(&mut i2c_bus, 40 ).unwrap();
но я не смогу так сделать, правильно?
Там из требований только I2C: Write Просто делаешь свой тип, имплементишь ему Write, и шаришь его как хочешь и куда хочешь (ну и куда можешь).
оно захватывает владение им
https://crates.io/crates/shared-bus
оу. топчинский
Обсуждают сегодня