func copyColl(srcColl *gkvlite.Collection, dstColl *gkvlite.Collection, writeEvery int) (numItems uint64, lastItem *gkvlite.Item, err error) { minItem, err := srcColl.MinItem(true) if err != nil { return 0, nil, err } if minItem == nil { return 0, nil, nil } var errVisit error = nil err = srcColl.VisitItemsAscend(minItem.Key, true, func(i *gkvlite.Item) bool { if errVisit = dstColl.SetItem(i); errVisit != nil { return false } numItems++ lastItem = i if writeEvery > 0 && numItems%uint64(writeEvery) == 0 { if errVisit = dstColl.Write(); errVisit != nil { return false } } return true }) if err != nil { return 0, nil, err } if errVisit != nil { return 0, nil, errVisit } return numItems, lastItem, nil }