I'm quite new to rust and used to write code in other languages like JavaScript. My project is to code a program to control a cc2500 chip from my raspberry pi via rppal crate in Rust. So far it works but I'm searching for the right way.
Given: I have a list of unsigned 8bit integers and need a list of Segments with delay 20.
In JavaScript I would do it like this
let bytes = [0x7F, 0x55, ...]
let segments = bytes.map(byte => {
let segment = Segment.with_write([byte]);
segment.set_delay(20);
return segment;
});
this.spi.transfer_segments(segments);
In rust I tried it like this
let bytes = vec![0x7F, 0x55, ...];
let mut segments:Vec<Segment> = vec![];
for (i, byte) in bytes.iter().enumerate() {
let buffer = [byte.clone()];
segments[i] = Segment::with_write(&buffer);
segments[i].set_delay(20);
}
let written = self.spi.transfer_segments(&segments)
.expect("Could not write to SPI bus");
But I always struggle with the ownership rules. How would you do this or what is the best practice?