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?