Only allocate in the empty case
Remove extra Vector
Remove String allocations.
Return a borrowed slice for edges()
Shuffle the api a bit.
Merge pull request #1 from Ryman/master

Cleaner api & less allocations