官术网_书友最值得收藏!

A better transaction log

So, the list of requirements got expanded:

  • Move forward through the log
  • Move backward through the log
  • Moves don't consume the log

A nice fit for the doubly linked list, so the existing transaction log can be upgraded! With the pointers to both neighbors of a node, it can solve the problem. However, what about moving through the list without removing elements?

For that, another concept is required: iterators. Rust's iterators are leaning on the functional side of programming and provide a versatile interface for integrating with all kinds of other data structures and commands across the language. For example, for loops will pick up on the iterator and behave as expected.

Iterators are pointers to the current item with a method called next() that produces the next item while moving the pointer forward! This concept is applied a lot when using a more functional approach to working with collections: by chaining them together and applying a function after invoking next(), going through a list can be very efficient. Check the Further reading section and the last chapter of this book for more information!

The data model is going to look like the singly linked list, so most of the operations can be used as they are—they only need to be upgraded to work with the back-pointer as well.

主站蜘蛛池模板: 西盟| 格尔木市| 灵宝市| 韶关市| 小金县| 临西县| 舟山市| 绵阳市| 新泰市| 启东市| 图片| 铅山县| 阜平县| 白朗县| 尉氏县| 高台县| 茌平县| 清新县| 松江区| 牟定县| 湖北省| 新河县| 桦南县| 汶上县| 宜阳县| 汤阴县| 迭部县| 文化| 文登市| 滨州市| 商水县| 驻马店市| 资源县| 河源市| 龙州县| 清新县| 调兵山市| 江源县| 清苑县| 花莲市| 勐海县|