I have this code:
use rand::seq::SliceRandom;
use std::ops::Range;
struct Stack {
settings: bool
}
fn generate_random_value(number: u8, cards: &mut Vec<Stack>) -> Vec<&Stack> {
let mut overflow = vec![];
let pos: usize = 2;
for _ in (Range { start: 0, end: number } ) {
let card = cards.choose(&mut rand::thread_rng()).unwrap();
overflow.push(card);
let elem = cards.iter().position(|&x| &x == card).unwrap();
};
return overflow
}
fn main() {
let stack_one = Stack {
settings: true
};
let stack_two = Stack {
settings: false
};
let mut vector = vec![stack_one, stack_two];
let _gen_num = generate_random_value(2, &mut vector);
}
Why does the error occur? The types are the same; &Stack and &Stack. How can I get rid of the error?
Online rust
In your example, you can derive PartialEq trait:
#[derive(PartialEq)]
struct Stack {
settings: bool
}
In more complex situation, you can overload it:
impl PartialEq for Stack {
fn eq(&self, other: &Self) -> bool {
... Your logic ...
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With