Как стать автором
Обновить

Комментарии 10

С другой стороны, у него слишком много поверхностных суждений, и информацию приходится искать самому.

+1, таких поверхностных статей в англоязычном сегменте выше крыши, к сожалению.

Долго не мог определиться с выбором материала для первой публикации на хабре, вот и взялся за этот цикл. Потом правда подвернулась неплохая (как мне кажется) статья про сишные объединения. В итоге этот перевод превратился в чемодан без ручки — всё время казалось, что "дальше будет интереснее", а потом было жалко бросать начатое.

В общем, обещаю не тащить это больше на хабр, тем более, что This Week in Rust регулярно подкидывает что-то интересное.

Я вот тоже примерно таким же занимался, даже статью на Хабр делал, но меня больше интересовали вопросы производительности в итоге. Думаю, что можно вдвоем попробовать накатать что-то более глубокое и содержательное. К примеру, можно попробовать связать код на Rust'е с программой на Swift'е. Знаю, что какие-то люди так делали и даже на ios'е результат запускали, но в рунете никто об этом не писал.

Можно попробовать, тем более, что даже на The Rust FFI Omnibus про Swift ничего нет.

Только не в англоязычном сегменте, а везде.

Вы не можете смешивать использование разных типов ключей, как это разрешается в Python...

Да все можно в Rust:
use std::collections::HashMap;

#[derive(Eq, PartialEq, Hash, Debug)]
enum Key {
    X(i32),
    Y(&'static str),
}

fn main() {
 
    let mut a = HashMap::new();
    a.insert(Key::X(1), 1);
    a.insert(Key::Y("ta-da!"), 2);
    
    assert_eq!( a[&Key::X(1)], 1 );
    assert_eq!( a[&Key::Y("ta-da!")], 2 );
    
    println!("{:?}", a);
}

Можно запустить

Дык, тип ключа будет всё равно один — "Key". (:

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

Так я не говорю, что это плохо или недостаточно, скорее "обычно". В С++ можно в какой-нибудь variant завернуть и получить такое же поведение.


Впрочем, подозреваю, что в Python, на который ссылается автор, происходит примерно такое же, с поправкой на динамическую типизацию.

Динамическая типизация (python, c++ any) != алгебраический тип (enum в rust, c++ variant).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории