Size: a a a

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

2020 April 14

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
@omni_viral вот небольшая иллюстрация вокруг этого. Просто сама мысль, что многие части данных и даже кода могут иметь свои идентификаторы для того, чтоб с ними можно было работать. Поведение, роль, семантика и жизненный цикл каждого идентификатора могут кардинально различаться. Например для некоторых идентификаторов нужен сложный алгоритм поддержания уникальности. Одни можно просто инкрементировать, другие генерируются на этапе компиляции, третьи вообще требуют отчасти ручного контроля со стороны пользователя. Кстати обычные указатели тоже ведь просто идентификаторы ячеек памяти.

Тут есть какая-то очень простая, но мощная идея, которую я пока не могу внятно объяснить.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Хотелось бы как-нибудь запихать ComponentTypeId в u64
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
А то так получается все 16 байт используются
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
А это уже не мало так
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Roman
Хотелось бы как-нибудь запихать ComponentTypeId в u64
На самом деле в явном виде эта штука может не храниться, но магическим образом появляться на стыке двух модулей.

Плюс их можно определённым образом сжимать в некоторых контекстах. Например:

Редактор (u64x2) <-> Данные (u128x2) <-> Сервер (u64) <-> Сетевой код (u16) <-> Клиент (u64)

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

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Сильно не бейте. Я раст только учу и пытаюсь его на практике разобрать. Вот тут в коде ошибка. именно из-за типов, который я передаю в функцию selection sort. И я не пойму почему. Вроде как  Я сделал вектор мутабельным, а компилятор всё равно ругается.
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
fn main() {
   let mut v = vec![10, 4, 5, 34, 56, 2100, 6, 3, 4, 100];

    selection_sort(&v);
}

fn find_smallest(arr: &Vec<i32>) -> usize {
   let mut smallest = arr[0];
   let mut smallest_index = 0;

   for i in 1..arr.len() {
       if arr[i] < smallest {
           smallest = arr[i];
           smallest_index = i;
       }
   }

   smallest_index as usize
}

fn selection_sort(arr: &mut Vec<i32>) -> Vec<i32> {
   let mut new_arr:Vec<i32> = vec![0; 0];

   for _i in 0..arr.len() {
       let smallest = find_smallest(arr);
       new_arr.push(arr.remove(smallest));  
   }
   
   new_arr
}
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Вот вывод компилятора:
4 |     let v_sorted: Vec<i32> = selection_sort(&v);
 |                                             ^^ types differ in mutability
 |
 = note: expected mutable reference `&mut std::vec::Vec<i32>`
                    found reference `&std::vec::Vec<i32>`
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
В selection_sort надо передать как &mut v
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
Или убрать требование мутабельности в самой функции
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
Все равно ведь новый вектор возвращаешь
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Vladyslav Batyrenko
В selection_sort надо передать как &mut v
а я разве не так передавал?
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
Я просто хочу разобраться, что я делаю не так. Я по типам прочитал уже интро, и думал, что понял всё, а теперь вижу, что не понял)
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Ты передавал &v
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
v: Vec<_> значит &v: &Vec<_>
источник

V

Vladyslav Batyrenko in RU Rust GameDev — русскоговорящее сообщество
Смотри код, где вызываешь функцию (мейн)
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
То бишь иммутабельная ссылка
источник

ВМ

Виталий Медоваров in RU Rust GameDev — русскоговорящее сообщество
Crush_my_love
Я просто хочу разобраться, что я делаю не так. Я по типам прочитал уже интро, и думал, что понял всё, а теперь вижу, что не понял)
Так тебе компилятор и ответил уже
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
всё понял
источник

C

Crush_my_love in RU Rust GameDev — русскоговорящее сообщество
спасибо)
источник