post-tree

Dec. 24th, 2022 04:12 pm
amarao: (Default)
[personal profile] amarao
Интернеты говорят, что во-первых Rc<RefCell> не идиоматично для Rust (деревья правильно держать как банальные вектора, содержащие в себе вектора векторов). Во-вторых, я, в целом, всё правильно сделал.

После некоторого кумекания получилось вот так вот, и я не вижу как его сделать существенно компактнее. Может быть, можно уйти от Enum и бального true/false хватит?

Да, получилось.

fn mktree(source: &[Option<i32>]) -> Tree {
if source.is_empty() || source[0].is_none() {
return None;
}
let tree: Tree = new_tree(source[0].unwrap());
let mut buff = VecDeque::new();
buff.push_back((tree.as_ref().cloned(), false));
for val in source[1..].into_iter() {
let subtree = val.and_then(|val| {
let subtree = new_tree(val);
buff.push_back((subtree.as_ref().cloned(), false));
subtree
});
let (node, is_last) = buff.pop_front().unwrap();
if is_last {
node.unwrap().borrow_mut().right = subtree;
} else {
node.as_ref().unwrap().borrow_mut().left = subtree;
buff.push_front((node.as_ref().cloned(), true));
}
}
tree
}

Что меня смущает? Изобилие as_ref().cloned(). Ща буду думать...

Date: 2022-12-25 07:01 pm (UTC)
From: [personal profile] eterevsky
У Java и Scala другие trade off'ы. И C++ 90х, на фоне которых создавалась Java был совсем другой.

> …сначала надо ответить себе на вопрос зачем было создано структурное программирование ...

Я хорошо знаю все слова, которые вы пишете, но не вижу в чём ваш пойнт.

Date: 2022-12-25 07:06 pm (UTC)
paserbyp: (Default)
From: [personal profile] paserbyp
Это потому что оно вам не надо. Для вас главное - это быть востребованным на рынке труда и зарабатывать побольше денег, а то о чем я говорю вам не интересно, так как не приносит никакой прибыли…

Date: 2022-12-25 07:10 pm (UTC)
From: [personal profile] eterevsky
Да не, мне интересно. Почти все языки и технологии, благодаря которым я сейчас "востребован на рынке труда" я учил потому что мне было интересно.

Но вы просто почти ничего не говорите по существу.

Date: 2022-12-25 07:47 pm (UTC)
paserbyp: (Default)
From: [personal profile] paserbyp
Просто по существу не говорят.

Что касается рынка труда, то он очень сильно меняется в этой сфере и вся суть этих изменений направлена на увеличение производительности труда, которая приводит к автоматизации и замене ручного труда. Вот и все, что я хотел вам сказать по существу.

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 04:15 am
Powered by Dreamwidth Studios