Pull to refresh

Comments 11

А можно как-то сравнить плюсы и минусы rust c например vale

Это очень однобоко. Например, ни слова что в Rust есть ADT, а в Vale нет (по крайней мере пока).

Vale умер не родившись

Последний коммит 7 месяцев назад, а основатель жаловался на здоровье.

Если только кто подхватит из Gimp - основного спонсора, как я понял

Рассматривать язык в отрыве от экосистемы бессмысленно. У раста большое комьюнити и куча библиотек. А о Vale я узнал только из этого комментария :)

можно в первом приближении оба на llvm, советую проверить видя его синтаксис есть ли в нем SIMD интрисинки(если нет, решите простую задачку поймите какой процессор сейчас использует система, какая битность, и взаивисимости от этого заюзайте "immintrin.h"), если нет найдите их и забиндите потомучто на Расте они есть

https://en.wikipedia.org/wiki/Single_instruction,_multiple_data

Про Раст мало на Хабре пишут, так что рискну спросить оффтопик: кто-нить в качестве паттерна делает ли как-то вот так:

async fn my_method(self: Arc<Mutex<Self>>) {
  ...
}

Уж очень хочется иногда в многопоточном приложении иметь объект, который в методах доступен через arc-mutex на self (а не через статические функции индивидуально по полям, где каждое поле есть сам себе arc-mutex).

Или какой-то другой паттерн вместо этого используют? Уж очень не хватает простоты «традиционных» языков в этом месте.

#[derive(Clone)]
pub struct MyType(Arc<Mutex<MyTypeInner>>);

struct MyTypeInner { /**/ }

Вот такое очень часто встречается.

Но тут получается boilerplate (кажется) - во-первых, везде надо .0 писать, а во-вторых, вот это MyType/MyTypeInner - дублируется часть “MyType”, и имя “inner” тоже попахивает. Выглядит неаккуратненько как-то. Может быть, есть какой-то более нативный способ?

Таков путь.

Даже внутри Arc используется ArcInner.

Ну и можно попробовать повесить все методы на Inner и реализовать Deref трейт который будет перенаправлять на Inner возвращая MutexGuard

Sign up to leave a comment.

Articles