#array #constant #traits #zero-copy #copies #sized

no-std diff-in-place

一个适用于常规模数组的无std、零拷贝、原地diff trait。

3个版本

0.1.2 2023年10月27日
0.1.1 2023年10月27日
0.1.0 2023年10月27日

#874嵌入式开发


用于 is31fl3733

自定义许可证

10KB
168

diff-in-place

一个轻量级的、符合Rust风格的trait,用于原地比较两个常规模数组的每个不同字节,不进行复制。两个数组中每个不等的运行结果都会调用回调函数,并传入起始索引和不同的字节。

这对于嵌入式环境很有用,例如在通过I2c/SMBus等外围总线更新集成芯片的状态时。

此crate适用于在no_std目标中使用。

示例

use diff_in_place::DiffInPlace;

// In this scenario you want to update the state on the chip without sending all 7 bytes
let state_on_chip = [0, 0, 1, 1, 1, 1, 1];
let mut new_state = state.clone()

new_state[6] = 0;

state_on_chip.diff_in_place(new_state, |i, data| {
    // i = 6
    // data = [0,]
    peripheral.write_at(i, data);
});

免责声明:此库不是官方产品,请自行承担使用风险。

无运行时依赖