#prog #rust
Хозяйке на заметку
Если нужно выяснить, указывают ли два экземляра
std::rc::Rc::ptr_eq
std::rc::Weak::ptr_eq
std::sync::Arc::ptr_eq
std::sync::Weak::ptr_eq
Хозяйке на заметку
Если нужно выяснить, указывают ли два экземляра
Rc<T>
на одно и то же место в куче, вместоRc::as_ptr(&a) == Rc::as_ptr(&b)
можно написатьRc::ptr_eq(&a, &b)
И, кстати, у слабых указателей такой метод тоже есть.std::rc::Rc::ptr_eq
std::rc::Weak::ptr_eq
std::sync::Arc::ptr_eq
std::sync::Weak::ptr_eq
doc.rust-lang.org
Weak in std::rc - Rust
`Weak` is a version of `Rc` that holds a non-owning reference to the managed allocation. The allocation is accessed by calling `upgrade` on the `Weak` pointer, which returns an Option<Rc<T>>.
👍13🤔2
— Наша команда разработки — это одна большая семья!
— Аааа, так вот почему у вас нету девопса, tech writer в запое, а глава QA-отдела постоянно срётся с тимлидом!
— Аааа, так вот почему у вас нету девопса, tech writer в запое, а глава QA-отдела постоянно срётся с тимлидом!
😁7👎2
#prog #rust #article
Прекрасная серия статей про, фактически, имплементацию схем рекурсии в Rust. Чувствуется нехватка GAT.
===
Elegant and performant recursion in Rust
This is a post about writing elegant and performant recursive algorithms in Rust. It makes heavy use of a pattern from Haskell called recursion schemes, but you don't need to know anything about that; it's just an implementation detail. Instead, as motivation, I have benchmarks showing a 14-34% improvement over the typical boxed pointer representation of recursive data structures in Rust.
===
Fully generic recursion in Rust
Previously, we introduced a method for writing performant stack safe recursion in Rust for a single recursive data structure. This post uses the same ideas to implement a single recursion backend that can collapse or expand any recursive data structure.
===
Single Pass Recursion in Rust
This is the third post in a three-post series. In the first post we developed a stack-safe, ergonomic, and concise method for working with recursive data structures (using a simple expression language as an example). In the second post we made it fully generic, providing a set of generic tools for expanding and collapsing any recursive data structure in Rust.
In this post we will see how to combine these two things - expanding a structure and collapsing it at the same time, performing both operations in a single pass. In the process, we will gain the ability to write arbitrary recursive functions over traditional boxed-pointer recursive structures (instead of the novel
Прекрасная серия статей про, фактически, имплементацию схем рекурсии в Rust. Чувствуется нехватка GAT.
===
Elegant and performant recursion in Rust
This is a post about writing elegant and performant recursive algorithms in Rust. It makes heavy use of a pattern from Haskell called recursion schemes, but you don't need to know anything about that; it's just an implementation detail. Instead, as motivation, I have benchmarks showing a 14-34% improvement over the typical boxed pointer representation of recursive data structures in Rust.
===
Fully generic recursion in Rust
Previously, we introduced a method for writing performant stack safe recursion in Rust for a single recursive data structure. This post uses the same ideas to implement a single recursion backend that can collapse or expand any recursive data structure.
===
Single Pass Recursion in Rust
This is the third post in a three-post series. In the first post we developed a stack-safe, ergonomic, and concise method for working with recursive data structures (using a simple expression language as an example). In the second post we made it fully generic, providing a set of generic tools for expanding and collapsing any recursive data structure in Rust.
In this post we will see how to combine these two things - expanding a structure and collapsing it at the same time, performing both operations in a single pass. In the process, we will gain the ability to write arbitrary recursive functions over traditional boxed-pointer recursive structures (instead of the novel
RecursiveTree
type introduced in my previous post) while retaining stack safety.Inanna Malick
Elegant and performant recursion in Rust
This is a post about writing elegant and performant recursive algorithms in Rust. It makes heavy use of a pattern from Haskell called recursion schemes, but you don’t need to know anything about …
👍2❤1🔥1