LINUX.ORG.RU

История изменений

Исправление baist, (текущая версия) :

Все программирование на раст и состоит с бесконечных вызовов [inline]unwrap[/inline] и ему подобных, а также кастыля lazy_static! который растоводы юзают довольно часто, судя по пакетам в crates.io. Что КАГБЭ НАМЕКАЭ на красоту языка.

И вся простота языка превращается в настоящий квест по написанию работающего кода, особенно весело начинается когда такой решил перейти на многопоточность.

Еще доставялет реализация структур данных на расте. Особенно бинарное дерево. Казалось бы задачка для джуниора на собеседовании для сишнака.

[code]

// # derive(PartialEq) struct Node<’a> { val: &’a str, l: Option<Box<Node<’a>>>, r: Option<Box<Node<’a>>>, } impl<’a> Node<’a> { pub fn insert(&mut self, new_val: &’a str) { if self.val == new_val { return } let target_node = if new_val < self.val { &mut self.l } else { &mut self.r }; match target_node { &mut Some(ref mut subnode) => subnode.insert(new_val), &mut None => { let new_node = Node { val: new_val, l: None, r: None }; let boxed_node = Some(Box::new(new_node)); *target_node = boxed_node; } } } }

[/code]

С моим 1-2 года опыта на раст, даже я без подсказки не догадаюсь что это простое бинрное дерево без ссылки на родителя и без дженериков. А если будет ссылка на родителя, а еще с дженериком. УУУУУУУУУУ вот это будет веселье.

Исходная версия baist, :

Все программирование на раст и состоит с бесконечных вызовов [inline]unwrap[/inline] и ему подобных, а также кастыля lazy_static! который растоводы юзают довольно часто, судя по пакетам в crates.io. Что КАГБЭ НАМЕКАЭ на красоту языка.

И вся простота языка превращается в настоящий квест по написанию работающего кода, особенно весело начинается когда такой решил перейти на многопоточность.

Еще доставялет реализация структур данных на расте. Особенно бинарное дерево. Казалось бы задачка для джуниора на собеседовании для сишнака.

[code=Rust] #[derive(PartialEq)] struct Node<’a> { val: &’a str, l: Option<Box<Node<’a>>>, r: Option<Box<Node<’a>>>, } impl<’a> Node<’a> { pub fn insert(&mut self, new_val: &’a str) { if self.val == new_val { return } let target_node = if new_val < self.val { &mut self.l } else { &mut self.r }; match target_node { &mut Some(ref mut subnode) => subnode.insert(new_val), &mut None => { let new_node = Node { val: new_val, l: None, r: None }; let boxed_node = Some(Box::new(new_node)); *target_node = boxed_node; } } } } [/code]

С моим 1-2 года опыта на раст, даже я без подсказки не догадаюсь что это простое бинрное дерево без ссылки на родителя и без дженериков. А если будет ссылка на родителя, а еще с дженериком. УУУУУУУУУУ вот это будет веселье.