code: func (c *Ctrie) Iterator(cancel <-chan struct{}) <-chan *Entry {
  	ch := make(chan *Entry)
  	snapshot := c.ReadOnlySnapshot()
  	go func() {
  		snapshot.traverse(snapshot.readRoot(), ch, cancel)
  		close(ch)
  	}()
  	return ch
  }
docs: // Iterator returns a channel which yields the Entries of the Ctrie. If a
  // cancel channel is provided, closing it will terminate and close the iterator
  // channel. Note that if a cancel channel is not used and not every entry is
  // read from the iterator, a goroutine will leak.