shikhalev.org
Иван Шихалев
💻 Технологии 📷 Фото 🕮 Жизнь 📚 Тексты 🎭 О себе

Содержание

  • Последние записи
    • Небольшой подводный камень в Rust

Atom Feeds

  • Все записи
    • Технологии

О себе

  • Иван Шихалев
  • 🖆 shikhalev@gmail.com
  • ⛰ Живу на Урале
  • 💻 Программист
  • 📷 Хобби — фотография
  • shikhalev
  • shikhalev
  • shikhalev
  • ivanshikhalev
  • shikhalev
🏠   Технологии :: Программирование :: Rust

Rust

Язык программирования Rust

Последние записи

  • 2021.03.16 | Разделы: Технологии :: Программирование :: Rust

    Небольшой подводный камень в Rust

    Обнаружил тут некоторый подводный камень в стандартной библиотеке Rust. Багом это назвать, конечно, нельзя, просто такой момент, где можно по собственной невнимательности наступить на грабли и не сразу это заметить, что нехарактерно для Rust.

    Опасность подстерегает нас, когда мы читаем данные из файла посредством std::fs::File.read()1, не используя при этом std::io::BufReader2, а самостоятельно выделяя блок памяти и читая в него.

    Подводный камень тут вот в чем, цитирую документацию:

    if n is 0, then it can indicate one of two scenarios:

    • This reader has reached its “end of file” and will likely no longer be able to produce bytes. Note that this does not mean that the reader will always no longer be able to produce bytes.
    • The buffer specified was 0 bytes in length.

    Подчеркивание мое. Итак, если мы передаем методу read() буфер нулевой длины, то результат будет ровно тот же самый, что и если мы достигли конца файла, т.е. Ok(0).

    1. https://doc.rust-lang.org/std/io/trait.Read.html#tymethod.read ↩

    2. https://doc.rust-lang.org/std/io/struct.BufReader.html ↩

    Читать далее »

    Теги: грабли

    Нет комментариев :: Добавить комментарий

  • Иван Шихалев
  • shikhalev@gmail.com

Материалы данного сайта опубликованы под лицензией CC BY-SA 4.0. Программный код непосредственно сайта — под лицензией MIT. Код основан на Jekyll c темой Minima. Также использован код allejo/jekyll-toc.

Блог. Склад текстов. И прочее городу и миру.