2015-06-10 3 views
2

Каков наиболее эффективный способ получить доступ к &mut [u8]? Прямо сейчас я заимствую у Vec, но было бы проще просто распределить буфер более напрямую.Создание байт-буферов в ржавчине

Лучшее, что я могу сделать прямо сейчас, - это предварительно распределить вектор, а затем вытолкнуть его длину, но нет способа, чтобы это было идиоматично.

let mut points_buf : Vec<u8> = Vec::with_capacity(points.len() * point::POINT_SIZE); 
    for _ in (0..points_buf.capacity()) { 
     points_buf.push(0); 
    } 
    file.read(&mut points_buf[..]).unwrap(); 

ответ

2

Вы можете просто создать VEC с заданным размером непосредственно:

vec![0; num_points] 

Или использовать итераторы:

repeat(0).take(num_points).collect::<Vec<_>>() 
+0

Моя забота с перераспределении. Как узнать, работает ли макрос 'vec!' 'With_capacity'? – xrl

Смежные вопросы