code: func (x *Index) EnumerateBlobMeta(ctx context.Context, fn func(camtypes.BlobMeta) bool) error {
  	if x.corpus != nil {
  		var err error
  		var n int
  		done := ctx.Done()
  		x.corpus.EnumerateBlobMeta(func(m camtypes.BlobMeta) bool {
  			// Every so often, check context.
  			n++
  			if n%256 == 0 {
  				select {
  				case <-done:
  					err = ctx.Err()
  					return false
  				default:
  
  				}
  			}
  			return fn(m)
  		})
  		return err
  	}
  	done := ctx.Done()
  	err := enumerateBlobMeta(x.s, func(bm camtypes.BlobMeta) error {
  		select {
  		case <-done:
  			return ctx.Err()
  		default:
  			if !fn(bm) {
  				return errStopIteration
  			}
  			return nil
  		}
  	})
  	if err == errStopIteration {
  		err = nil
  	}
  	return err
  }
docs: // EnumerateBlobMeta calls fn for all known meta blobs.
  // If fn returns false, iteration stops and an nil error is returned.
  // If ctx becomes done, iteration stops and ctx.Err() is returned.