Маjко
Для тебя жесть, а гошники таким макаром дженерики делают
Anonymous
я знаю
Anonymous
но они дураки
Мерль
Продолжаю поглядывать на Rust (и вам рекоммендую):
https://github.com/mre/idiomatic-rust
Ilia
Alex
分解物質
https://www.linux.org.ru/news/development/13637503?cid=13639270
分解物質
https://pro.theta.eu.org/2017/08/04/async-rust.html
очень годно
Alex
> The truth is, async programming is hard in a language that isn’t really designed for it
ahahah
Alex
мне тоже так кажется.
պլհկ
Обсуждали уже
Karey
И какой вывод? Токио наше все и это все придирки или выкинуть и все переделать?
でゲソ
Маjко
Токио по уши во фьючах
Loo
ахах
Loo
😂
Alex
Маjко
Вы троллите или я чего-то не понимаю?)
Alex
Маjко
Что да? :D
Alex
Маjко
Сука.
Alex
😢
Loo
Alex
ну, для меня promise и future это почти одно и тоже, обещание по сути. Так что я решил что "токио это сплошные обещания" выглядит забавно.
Alex
не силен в лингвистике, это афоризм?
Karey
Тонко
Loo
игра слов поняли да
Loo
а? а?
Alex
я вообще считал что это достаточно очевидным выглядело 😞
Маjко
Alex
Маjко
Alex
i promise
Loo
хохохо
Alex
а вообще, это зависит от Future.status()
Alex
или как там в футурах.
Oleg
Будущее покажет, короче
Karey
i promise
https://i.ytimg.com/vi/0sFvFVkeGVg/maxresdefault.jpg
Alex
самое забавное что я эту переписку скинуть никуда не смогу, специфический юморок.
Alex
Немного печально даже.
Berkus
Господа, я правильно понимаю что в этом случае error[E0277]: the trait bound `id_tree::Tree<support::model::ActorNode>: std::fmt::Debug is not satisfied` выхода нет кроме как найти автора библиотеки и засунуть в его сопротивляющуюся тушку пулл реквест?
Маjко
Ага
Маjко
Ну или форкни и юзай свой форк пока он сопротивляется
Berkus
ага, спасибо
Alex
Маjко
Можно еще NewType заюзать, если все нужные поля публичны у нужного тебе типа
Маjко
Но это такое, лучше PR
Alex
можно в принципе держать пуллреквест актуальным. А вот когда два фикса наберется, там печаль.
Alex
а если у меня уже есть собственный event loop, я могу сбоку иногда дергать tokio и просить обработать какое то количество событий?
Berkus
pub struct Actor {
pub tree: Tree<ActorNode>,
pub root_id: NodeId,
}
let mut m = Actor {
tree: TreeBuilder::new().with_node_capacity(5).build(),
root_id: self.tree.insert(Node::new(ActorNode::Root), AsRoot).unwrap(),
};
так понятное дело не работает, так что я хотел спросить у вас - где почитать про идиоматические конструкторы в расте и как мне правильно инициализовать поля новой структуры если там например root_id зависит от tree?
Berkus
https://stackoverflow.com/questions/25269597/how-to-initialize-struct-fields-which-reference-each-other#25415689 пока только такое нашел
Cuno
let mut m = {
let tree = TreeBuilder::new().with_node_capacity(5)
};
Cuno
-_-
Cuno
shift-insert
Cuno
Короче, создавай сначала поля
Cuno
а потом уже конструируй объект
Cuno
let mut m = {
let tree = TreeBuilder::new()
.with_node_capacity(5)
.build();
let root_id = self.tree.insert(Node::new(ActorNode::Root), AsRoot).unwrap();
Actor { tree, root_id }
};
Cuno
Вообще на такое билдер желательно писать.
Anonymous
дерайвить
Berkus
Berkus
Anonymous
https://github.com/colin-kiegel/rust-derive-builder ?
Berkus
pub fn new(tree: Tree<ActorNode>) -> Self {
let mut tree = tree;
let root_id = tree.insert(Node::new(ActorNode::Root), InsertBehavior::AsRoot).unwrap();
Self {
tree: tree,
root_id: root_id,
}
}
сделал так, вроде ок?
Berkus
даа, работать с деревьями в расте прямо боль
Маjко
Работать с деревьями без GC — боль *
Cuno
Как из Arc<T> где T: Sync получить &mut T?
Loo
https://doc.rust-lang.org/std/sync/struct.Arc.html#method.get_mut
Cuno
Оно None вернет
Cuno
> Returns None otherwise, because it is not safe to mutate a shared value.
Anonymous
ну вот
Anonymous
там даже в документации написано
Anonymous
Shared references in Rust disallow mutation by default, and Arc is no exception. If you need to mutate through an Arc, use Mutex, RwLock, or one of the Atomic types.
Cuno
Я в курсе, что можно в мьютекс.
Cuno
вопрос в том, как это сделать без него
Anonymous
странный вопрос