# ListQueue<E>.from constructor

ListQueue<E>.from(Iterable elements)

Create a `ListQueue` containing all `elements`.

The elements are added to the queue, as by addLast, in the order given by `elements.iterator`.

All the `elements` should be instances of `E`. The `elements` iterable itself may have any element type, so this constructor can be used to down-cast a `Queue`, for example as:

    Queue<SuperType> superQueue = ...;
    Queue<SubType> subQueue =
        new ListQueue<SubType>.from(superQueue.whereType<SubType>());

## Implementation

    factory ListQueue.from(Iterable elements) {
      if (elements is List) {
        int length = elements.length;
        ListQueue<E> queue = ListQueue<E>(length + 1);
        assert(queue._table.length > length);
        for (int i = 0; i < length; i++) {
          queue._table[i] = elements[i];
        }
        queue._tail = length;
        return queue;
      } else {
        int capacity = _INITIAL_CAPACITY;
        if (elements is EfficientLengthIterable) {
          capacity = elements.length;
        }
        ListQueue<E> result = ListQueue<E>(capacity);
        for (final element in elements) {
          result.addLast(element);
        }
        return result;
      }
    }