Мне кажется вы что-то перепутали, сейчас в стабильном расте тип const-generic параметра вообще может быть только числом, bool и char, свои типы нельзя использовать даже с #[derive(PartialEq)].
Подобное ограничение есть в паттерн матчинге, там константные паттерны работают только с типами у которых есть derive(PartialEq, Eq), но там и ссылки работают:
#[derive(PartialEq, Eq)]
struct Derived(i32);
struct Manual(i32);
impl Eq for Manual {}
impl PartialEq for Manual { ... }
const D: Derived = Derived(0);
const DR: &'static Derived = &Derived(0);
const M: Manual = Manual(0);
match Manual(1) {
// error: to use a constant of type `Manual` in a pattern, `Manual` must be annotated with `#[derive(PartialEq, Eq)]`
M => println!("zero???"),
_ => println!("non-zero :("),
}
match Derived(1) {
D => println!("zero!"), // ok
_ => println!("non-zero :("),
}
match &Derived(1) {
DR => println!("zero!"), // ok
_ => println!("non-zero :("),
}
Так же динамическая типизация помогает в случаях, если функция занимается вызовом других функций, в зависимости от их типов (для тех языков, где не придумали конструкции как в Swift, которая действительно удобнее)
А какие конструкции придумали в свифте? Ниразу свифт не щупал, но интересно что там с функциями интересного "придумали" :)
В расте надо выбирать написать код без unsafe или чуть более оптимальный внутри unsafe.
Не раз слышал что unsafe-код заменяли на safe с выигрышем по производительности, так что не думаю что тут есть выбор между "написать код без unsafe или чуть более оптимальный внутри unsafe". Скорее есть возможность safe-код, скорость которого не устраивает, попытаться оптимизировать с помощью unsafe.
Мне кажется вы что-то перепутали, сейчас в стабильном расте тип const-generic параметра вообще может быть только числом,
bool
иchar
, свои типы нельзя использовать даже с#[derive(PartialEq)].
Подобное ограничение есть в паттерн матчинге, там константные паттерны работают только с типами у которых есть
derive(PartialEq, Eq)
, но там и ссылки работают:Извините за оффтоп, но с помощью чего был нарисован граф? Уже давно ищу инструменты для такого...
ъеъ ufo ?
Хм, извиняюсь. Мне казалось я видел как ты где-то делал примеры кода на расте… Наверное перепутал с кем-то другим
Автор знает Rust. Вот например упоминание в другой ветке: https://habr.com/ru/post/497114/#comment_21547706
А какие конструкции придумали в свифте? Ниразу свифт не щупал, но интересно что там с функциями интересного "придумали" :)
Не раз слышал что unsafe-код заменяли на safe с выигрышем по производительности, так что не думаю что тут есть выбор между "написать код без unsafe или чуть более оптимальный внутри unsafe". Скорее есть возможность safe-код, скорость которого не устраивает, попытаться оптимизировать с помощью unsafe.