strcat and I have been casually brainstorming about container traits. Has there been previous discussion about standardizing a container trait hierarchy and method naming convention?

Below is a rough sketch of a simple container framework, inspired by Scala, Python, and C++ STL. Scala has a well-organized trait hierarchy, but I'm partial to C++ STL's method names because they are short and consistent. :)

* trait Container
* trait Iterable?
    * trait Map
        * struct LinearMap (and any future hash-based maps)
        * trait OrderedMap? (range queries, forward/reverse iteration)
            * struct TreeMap
            * struct TrieMap?
    * trait Set
        * struct LinearSet (and any future hash-based sets)
        * struct BitSet (includes bit op methods like flip() and to_uint())
        * trait OrderedSet?
            * struct TreeSet
            * struct TrieSet?
    * trait Seq (Sequence)
        * struct Stack
        * trait Queue
            * trait List (or trait Deque?)
* struct Deque? (vec-based. Vec? VecDeque? "ArrayDeque" like Java?)
                * struct LinkedList
                * struct PriorityQueue

Links:
* Brainstorming wiki: https://etherpad.mozilla.org/h7KjhELWXk
* Scala collections: http://www.scala-lang.org/docu/files/collections-api/collections.html * Python containers: http://www.python.org/dev/peps/pep-3119/#abcs-for-containers-and-iterators
* C++ STL containers: http://en.cppreference.com/w/cpp/container


chris

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to