Ответы пользователя по тегу Rust
  • Как проверить збч на примере игральной кости, не ожидая миллиона лет?

    @historydev Автор вопроса
    Редактирую файлы с непонятными расширениями
    Ошибка была в коде, вот конечная функция для любых диапазонов:
    // law of large numbers
    pub fn lln(min: u32, max: u32, attempts: u32) -> f32 {
        let mut sum = 0;
        let mut rng = thread_rng();
    
        for _ in 0..attempts { sum += rng.gen_range(min..=max); }
    
        sum as f32 / attempts as f32
    }
    Ответ написан
    Комментировать
  • Хочу начать изучать Rust, стоит ли начинать с официальной книги?

    @historydev
    Редактирую файлы с непонятными расширениями
    Да, стоит, это великолепное издание проведёт тебя так гладко и приятно по языку, что после ты не захочешь смотреть на другие)

    Вдобавок многие популярные библиотеки пишут обучалки в формате Rust Book.
    Ответ написан
    3 комментария
  • По каким причинам тест может "падать" именно в github actions?

    @historydev
    Редактирую файлы с непонятными расширениями
    Попробуй собрать в виртуалке, предварительно подготовив окружение, возможно проблема в том что всё это запускается в виртуалке.
    Можно докер, vbox, qemu - что угодно.
    Ответ написан
    Комментировать
  • Различная конфигурация для пакетов в одном workspace?

    @historydev
    Редактирую файлы с непонятными расширениями
    https://doc.rust-lang.org/book/ch14-03-cargo-works...
    A workspace is a set of packages that share the same Cargo.lock and output directory.


    https://doc.rust-lang.org/cargo/commands/cargo-bui...
    cargo build -p kernel --target x86_64-unknown-none
    Ответ написан
    Комментировать
  • В чём проявляется зависимость c++ от железа и касается ли это Rust?

    @historydev
    Редактирую файлы с непонятными расширениями
    Java запускается в переносимой виртуальной машине которая уже умеет во все архитектуры, а на системных языка тебе нужно компилировать программу для конкретной архитектуры, например: x86, arm.

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

    Архитектура подразумевает публичный api который реализуется множеством процессоров.

    Не нужно сравнивать прикладные языки с системными.

    Единственный низкоуровневый язык - это язык ассемблера, все остальные, включая С - высокоуровневые языки.

    Разница лишь в области применения, никто не будет писать фронтенды на С, у каждого из инструментов есть проблема, которую он решает и область применения в которой эта проблема актуальна.
    Ответ написан
    Комментировать
  • Как передать индекс u8 в pow u32 метод?

    @historydev Автор вопроса
    Редактирую файлы с непонятными расширениями
    2 ошибки, перепутал порядок элементов в деструктуризации кортежа который возвращает enumerate и пытался привести из-за этого usize в u16, отсюда и ошибка #2:
    let curr_num: u16 = 2000;
        let mut num: u16 = 0;
        
        for (i, b) in curr_num.to_le_bytes().iter().enumerate() {
            num += (*b as u16) * 256u16.pow(i as u32);
        }
        
        println!("{num}");
    Ответ написан
    Комментировать