Координирую https://gamedev.rs
Поддерживаю https://arewegameyet.rs
Веду https://twitter.com/rust_gamedev
Работаю в JetBrains над IntelliJ-Rust.
Контакты
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (13)

Лучшие ответы пользователя

Все ответы (25)
  • Как посчитать количество определенных символов в строке на Rust?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    В постановке задачи есть важный нюанс: что считать символом?

    Если считать обычный встроенный char, то просто получаем .chars() итератор из строки, фильтруем и считаем:
    "12121".chars().filter(|&c| c == '2').count()

    Но надо понимать, что на строках с графемными кластерами (а именно их обычные пользователи обычно считают символами) такой код будет криво работать. Если это нам важно, то идем за lib.rs/unicode_segmentation и пользуемся его graphemes методом:
    "éaébé".graphemes(true).filter(|&g| g == "é").count()


    Песочница.
    Ответ написан
    1 комментарий
  • Что значит -> в Rust?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    растбук: "Функции возвращающие значения" - просто часть ситнаксиса ржавых функций, которая используется когда нужно явно обозначить возвращаемый тип.
    Ответ написан
    Комментировать
  • Почему скомпилированный "Hello World", на Rust занимает на диске 10 Мегабайт?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    Почему скомпилированный «Hello World», на Rust занимает на диске 10 Мегабайт?


    10мб звучит многовато. порядка 2-5 скорее должен - точнее зависит от платформы.
    А место во влоб собранном "пустом" helloworld'е занимают, по идее, куски стандартной либы - println! хоть и выглядит просто, но тянет за собой машинерию форматирования, обработки потенциальных ошибок, раскрутки, бектрейсов и т.п. И все это с отладочными символами.

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


    В общем-то, в современной серьезной разработке на питоне это не так - пакетные менеджеры тоже делают свое окружение со своими зависимостями для каждого проекта. Иначе, как минимум, сложно получить воспроизводимость сборок.

    Разработчики Rust собираются фиксить это?


    Насколько я знаю, сейчас нет четкого консенсуса нужно ли это вообще "исправлять", так что я бы в обозримом будущем не ждал тут больших изменений. В данный момент можно самому явно попросить cargo использовать общую target директорию:

    1) прописать нанужном уровне в `.cargo/config`:

    [build]
    target-dir = "/hone/username/myrusttarget"


    Или воспользоваться переменной окружения:

    export CARGO_TARGET_DIR = "/hone/username/myrusttarget"


    Но надо учитывать, что у некоторых нетривиальных зависимостей могут возникнуть проблемы с фичами или замороченной логикой build.rs скриптов и могут перестать работать не рассчитанные на это cargo плагины.
    Ответ написан
    2 комментария
  • Нету config файла в .cargo (macOS)?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    Его по умолчанию и не должно быть - создавай сам в нужном скоупе, если что-то в него надо прописать.
    Ответ написан
    Комментировать
  • Что за файл Makefile и для чего он нужен в проектах на Rust?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    За непосредственную сборку кода на раст обычно отвечает родной пакетный менеджер - Cargo.

    Мейкфайлами в раст проектах иногда пользуются для автоматизации других рутинных задач, например запуска отладочного сервера с нужным конфигом, конвертации ресурсов, подготовки каких-нибудь особых пакетов, т.п. Но для этого для обязательно использовать честный make, можно взять какой-то из близких по функционалу расширений cargo, например https://github.com/sagiegurari/cargo-make .
    Ответ написан
    2 комментария