Задать вопрос
Ответы пользователя по тегу Rust
  • Что такое mod в Rust?

    bingo347
    @bingo347
    Crazy on performance...
    mod - это объявление дочернего модуля/пространства имен
    Есть 2 способа объявления - через блок и через отдельный файл:
    // через блок
    mod some_module {
      // тут изолированное пространство имен
      pub fn hello() {
        println!("Hello world");
      }
    }
    fn main() {
      some_module::hello(); // Hello world
    }
    
    // подключаем модуль из файла ./some_other_module/mod.rs или ./some_other_module.rs
    mod some_other_module;

    так же через оператор pub можно делать реэкспорт модуля целиком, делая тем самым структуру пространств имен Вашего крэйта
    Ответ написан
    Комментировать
  • Почему выходит паника - panicked at 'panicked at 'index out of bounds: the len is 0 but the index is 0'?

    bingo347
    @bingo347
    Crazy on performance...
    У вас вектор matrix_c изначально пустой, Вы пытаетесь писать в несуществующий элемент.
    Вижу, что у Вас закоменчен вариант с методом push (почему он Вам не подошел не знаю).
    Как вариант можно сразу создать вектор нужного размера, заполненный значениями по умолчанию (например нулями):
    // добавлю пару констант, для простоты модификации
    let rows = 2;
    let cols = 2;
    
    let matrix_a =  vec![1,2,3,4];
    let matrix_b =  vec![5,6,7,8];
    let mut  matrix_c = vec![0; rows * cols]; // 0 - default, rows * cols - размер (4)
    
    for row in 0..rows {
      for col in 0..cols {
        let mut vec_buf = 0;
        for k in 0..2 {
          vec_buf = vec_buf + matrix_a[row * 2 + k] * matrix_b[k * 2 + col];
        }
        matrix_c[row * 2 + col] = vec_buf; // теперь должно быть все ок
                             // так как спокойно передаем владение существующему элементу вектора
      }
    }
    
    
    for (i, x) in matrix_c.iter().enumerate(){
      println!(" элем = {:?}, значение = {:?}", i, x);
    }
    Ответ написан
    1 комментарий