450+ test cases help me a lot to refactor packages largely. `gorename` and `gomvpkg` also helped the migration.
getelementptr LLVM IR instruction is ALWAYS confusing and I need to rush in a language reference manual.
I learned how to implement data structures with amortized-ordered operations.
1. Make invariant(s) to make operations amortized order (e.g. O(1) enque for Queue)
2. Prove it
3. Implement it not to break the invariant
I implemented lazy evaluation in Rust. I learned a lot about lazy evaluation and Deref coercion and RefCell.
I implemented an immutable Red-Black Tree in Rust. It was not so fun comparing with implementing binomial heap...
I feel Babel&webpack would be a kind of jQuery in next era
When benchmark reveals that the owned type value causes bottleneck, I think then it's time to use lifetime restriction to gain more CPU/memory efficiency. I need to know how to take a benchmarking on Rust easily.
Writing restriction of lifetime ('a or something) makes program so complicated. I think I should avoid it as much as possible, preferring to owned types (String v.s. &str).
All I need to do is to fix the ownership errors by using references or `.clone()` properly.
Writing in Rust is a bit more difficult than writing in SML because I need to consider ownership. However, compiler can detect kind of errors related to ownership statically.
Rust compiler is much cleverer than me...