Size: a a a

Rust — русскоговорящее сообществo

2020 August 17

b

in Rust — русскоговорящее сообществo
сравниваю сперва этот вектор с парой других, затем итерируюсь по нему один раз, и до бесконечности пока не обработается до конца и не выйдет то, что мне нужно
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну если сравнивать, то есть смысл в вектор собирать.
источник

JC

Julian =) Coffee in Rust — русскоговорящее сообществo
Эрик
Но может быть и проблема ноды, на которой coc бегает.
Это уже не смешно
источник

Э

Эрик in Rust — русскоговорящее сообществo
Эрик
fn read_lines_from_file(mut fz: File, buffer_string: &mut String) -> io::Result<Vec<&str>> {
 fz.read_to_string(&mut buffer_string)?;
 Ok(buffer_string.lines().collect())
}
Вот это вот просто используй, чтобы лишних аллокаций не было.
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Эрик
Вот это вот просто используй, чтобы лишних аллокаций не было.
Если хочется аллокаций поэкономить то там еще with_capacity нехватает.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Casual tears
Если хочется аллокаций поэкономить то там еще with_capacity нехватает.
Это надо бойлерплейт писать.
источник

Э

Эрик in Rust — русскоговорящее сообществo
fn read_lines_from_file(mut fz: File, buffer_string: &mut String) -> io::Result<Vec<&str>> {
 if let Ok(n) = fz.metadata().map(|m| m.len()) { buffer_string.reserve(n); }
 fz.read_to_string(&mut buffer_string)?;
 Ok(buffer_string.lines().collect())
}
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ладно, вру, не надо, одной строчки хватит.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Arc<Mutex<>>
источник

Э

Эрик in Rust — русскоговорящее сообществo
Посмотри доки в std::sync модуле.
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
источник

JC

Julian =) Coffee in Rust — русскоговорящее сообществo
Писать сообщения и удалять, как так можно >_<
источник

b

in Rust — русскоговорящее сообществo
я нечаянно,

let mut pb = ProgressBar::new(p_data.len() as u64);

   for fl in p_data {
       pool.execute(|| {
           let res = check_gate7(fl);
           pb.inc(1);
           println!("{}|{}", res.line, res.status);
       });
   }

   pool.join();


так в расте нельзя, но как сделать? move не поможет, ибо 4 потока
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
я нечаянно,

let mut pb = ProgressBar::new(p_data.len() as u64);

   for fl in p_data {
       pool.execute(|| {
           let res = check_gate7(fl);
           pb.inc(1);
           println!("{}|{}", res.line, res.status);
       });
   }

   pool.join();


так в расте нельзя, но как сделать? move не поможет, ибо 4 потока
let pb = pb.clone();
pool.execute(move || ... )
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Таким образом в каждом треде будет по отдельному поинтеру на progress bar
источник

b

in Rust — русскоговорящее сообществo
понял, я почему-то думал что клонирование = создание нового экземпляра progress bar с исходными значениями (от родителя)
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
понял, я почему-то думал что клонирование = создание нового экземпляра progress bar с исходными значениями (от родителя)
> The progress bar is an Arc around an internal state. When the progress bar is cloned it just increments the refcount which means the bar is shared with the original one.

В доках описано
источник

b

in Rust — русскоговорящее сообществo
вижу, ну то есть с обычным крейтом без поддержки потоков не прокатит такое, и как быть в таких случаях? переписывать крейт ?
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
вижу, ну то есть с обычным крейтом без поддержки потоков не прокатит такое, и как быть в таких случаях? переписывать крейт ?
С каким "обычным"? Progress bar из indicatif уже thread-safe.
источник

b

in Rust — русскоговорящее сообществo
к примеру «https://lib.rs/crates/pbr»
источник