What is the most idiomatic way to write the following piece of code preferably in one line? Sorry, I am learning Rust. I'd really appreciate your help.
let mut ret:Vec<i32> = (-(n-1)/2..=-1).collect();
Sample vector contents as a result for
[-2, -1, 0, 1, 2]
This may actually be more efficient than the "idiomatic" way in this case. But either way, here it is:
let ret = (1..n * 2).map(|x| x - n).collect::<Vec<_>>();
Ack! Wait, I misread your question,
n = 5 in your example, which is not what my program would produce. I will update shortly with a solution.
n = (n + 1) / 2; before that makes my original solution work.
I'd rather spend more time on it but I cannot at the moment.
Thank you. I get the idea. This works for me:
let ret = (-n/2..=n/2).map(|x| x).collect::<Vec<_>>();
.map(|x| x) does nothing, so you can remove it.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.