Простые ошибки, которые вы допускаете по невнимательности

Привет.

Вот, на какую граблю я сейчас встал:

    let count = 100;

    let mut seeds = vec![0u64; count];
    for it in 0..count {
        let match_k_seed = random.borrow_mut().next_u64();
        seeds.push(match_k_seed);
    }
    for it in 0..count {
        // run match
        let match_k_seed = seeds[it];
        // пытаюсь использовать match_k_seed но почему-то особой рандомности не видно
        ...
    }

Никакой рандомности не было, потому что все сиды == 0!
Я конечно же хотел let mut seeds = Vec::with_capacity(count).

Пишите сюда, какие тривиальные ошибки вам тоже доводилось совершать на rust.

2 лайка

let data = mutex.lock().unwrap();
// работаем с data
// спустя 200 строк
let data = mutex.lock().unwrap();
// опять хотим работать с data, но что-то всё зависло...

И не спрашивайте, почему у меня по 200 строк кода в одной функции :slight_smile:

1 лайк

Долго не мог понять, почему приведение ошибки не работает. let _x = ... вызывается внутри замыкания
:man_facepalming:

2 лайка
let mut buf = [0_u8, $n_words*8];
let mut i = buf.len() - 1;
let mut current = *self;
let ten = $name::from(10);

loop {
	let digit = (current % ten).low_u32() as u8;
	buf[i] = digit + b'0';
	current = current / ten;
	if current.is_zero() {
		break;
	}
	i -= 1;
}

Долго думал, почему падает с переполнением если число достаточно большое. Плюсовая ошибка с , и тут меня нашла :slight_smile:

3 лайка
fn main() {
    let mut buf = [0_u8, 4*16];
    let len = buf.len();
    
    println!("{:?} : {}", buf, len) // выводит [0, 64] : 2
}

Первая реакция здорового человека: “что за чушь? почему не 64?”
А потом: “а лол”

Должно быть конечно же [0_u8; 4*16].

By @Pzixel

2 лайка