@ekuber it's pretty hard to do/undo lifetimes vs Arc, Arc vs Rc (rhai's impl has an abstraction for this which I kinda like), add/remove generics. In general, some refactorings in Rust are tedious. Often -but not always- balanced out (eclipsed) by certainty of "refactoring is safe, the compiler will catch me".
Advanced trait bounds syntax hard to remember
the different namespaces can be confusing (is Error an enum here or a trait?)