That did it - thank you! For the archives:
eltype(::Type{EdgeIter}) = Edge On Friday, November 27, 2015 at 5:29:20 PM UTC-8, Dan wrote: > > Looking at the collect code, it seems you really should define Base.eltype > for > your iterator and things will work out. > > On Saturday, November 28, 2015 at 3:15:18 AM UTC+2, Seth wrote: >> >> I guess that makes sense, though I struggle to see why one would create >> an iterator that produces multiple types. >> >> On Friday, November 27, 2015 at 4:45:26 PM UTC-8, ele...@gmail.com wrote: >>> >>> Collect only requires that the collection is iterable, for which >>> providing an eltype() function is optional. I don't know if it is possible >>> to check at runtime if eltype() exists for the collection then it could use >>> that instead of Any, otherwise it would have to iterate the collection to >>> find all the types and either accumulate the results in an Any collection >>> as it goes and copy them to the right type collection later, or iterate >>> twice. >>> >>> On Saturday, November 28, 2015 at 10:17:09 AM UTC+10, Seth wrote: >>>> >>>> Well, I just found collect(Edge, edges(g)) works, but it would be nice >>>> if collect() returned a vector of Edge by default. Any ideas? >>>> >>>> On Friday, November 27, 2015 at 3:46:58 PM UTC-8, Seth wrote: >>>>> >>>>> I have implemented my own iterator that works against edges in a >>>>> graph, and edges(g) returns the iterator. However, collect(edges(g)) >>>>> returns an array of Any,1. I'd like it to return an array of Edge, 1. >>>>> What am I missing? >>>>> >>>>>