{"action":"created","issue":{"url":"https://api.github.com/repos/dart-lang/sdk/issues/23603","labels_url":"https://api.github.com/repos/dart-lang/sdk/issues/23603/labels{/name}","comments_url":"https://api.github.com/repos/dart-lang/sdk/issues/23603/comments","events_url":"https://api.github.com/repos/dart-lang/sdk/issues/23603/events","html_url":"https://github.com/dart-lang/sdk/issues/23603","id":86035580,"number":23603,"title":"Dart lacks a QueueBase and QueueMixin class in the dart:collection library","user":{"login":"MichaelFenwick","id":3000467,"avatar_url":"https://avatars.githubusercontent.com/u/3000467?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelFenwick","html_url":"https://github.com/MichaelFenwick","followers_url":"https://api.github.com/users/MichaelFenwick/followers","following_url":"https://api.github.com/users/MichaelFenwick/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFenwick/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFenwick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFenwick/subscriptions","organizations_url":"https://api.github.com/users/MichaelFenwick/orgs","repos_url":"https://api.github.com/users/MichaelFenwick/repos","events_url":"https://api.github.com/users/MichaelFenwick/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFenwick/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dart-lang/sdk/labels/Area-Library","name":"Area-Library","color":"ededed"},{"url":"https://api.github.com/repos/dart-lang/sdk/labels/Library-Collection","name":"Library-Collection","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-06-08T05:37:50Z","updated_at":"2015-06-12T19:49:55Z","closed_at":null,"body":"The dart:collection library has a FooBase and FooMixin class for Iterables, Lists, Sets, Maps, and even UnmodifiableMapViews. These classes offer excellent utility in allowing users to implement their own extending classes without having to override or forward anywhere from 20 to 40 methods, saving both hours of programming time as well as making the code significantly more readable. The Queue class, however, despite being a Collection, lacks the corresponding classes, which forces developers to choose between low effort and high readability versus better performance which only a Queue is needed rather than a List.\r\n\r\nBoth a QueueBase and QueueMixin class should be added to the dart:collection library so that Queues can be extended in a similar manner to all other Collections."},"comment":{"url":"https://api.github.com/repos/dart-lang/sdk/issues/comments/111598268","html_url":"https://github.com/dart-lang/sdk/issues/23603#issuecomment-111598268","issue_url":"https://api.github.com/repos/dart-lang/sdk/issues/23603","id":111598268,"user":{"login":"MichaelFenwick","id":3000467,"avatar_url":"https://avatars.githubusercontent.com/u/3000467?v=3","gravatar_id":"","url":"https://api.github.com/users/MichaelFenwick","html_url":"https://github.com/MichaelFenwick","followers_url":"https://api.github.com/users/MichaelFenwick/followers","following_url":"https://api.github.com/users/MichaelFenwick/following{/other_user}","gists_url":"https://api.github.com/users/MichaelFenwick/gists{/gist_id}","starred_url":"https://api.github.com/users/MichaelFenwick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichaelFenwick/subscriptions","organizations_url":"https://api.github.com/users/MichaelFenwick/orgs","repos_url":"https://api.github.com/users/MichaelFenwick/repos","events_url":"https://api.github.com/users/MichaelFenwick/events{/privacy}","received_events_url":"https://api.github.com/users/MichaelFenwick/received_events","type":"User","site_admin":false},"created_at":"2015-06-12T19:49:55Z","updated_at":"2015-06-12T19:49:55Z","body":"I can't say I'm really want both the Mixin and Base classes rather than just the Base class, other than it would make some sense to have both if only for consistency with the other implementation helper classes in the collections package. And while it is true that there isn't too much extra overriding you'd need to do if you went with something like 'class Foo extends Queue with IterableMixin` over `class Foo extends QueueBase`, it'd still be a rather nice (if minor) convenience and I don't suspect there would be many downsides to providing it."}}