code: func (b *bucket) Cursor() database.Cursor {
  	// Ensure transaction state is valid.
  	if err := b.tx.checkClosed(); err != nil {
  		return &cursor{bucket: b}
  	}
  
  	// Create the cursor and setup a runtime finalizer to ensure the
  	// iterators are released when the cursor is garbage collected.
  	c := newCursor(b, b.id[:], ctFull)
  	runtime.SetFinalizer(c, cursorFinalizer)
  	return c
  }
docs: // Cursor returns a new cursor, allowing for iteration over the bucket's
  // key/value pairs and nested buckets in forward or backward order.
  //
  // You must seek to a position using the First, Last, or Seek functions before
  // calling the Next, Prev, Key, or Value functions.  Failure to do so will
  // result in the same return values as an exhausted cursor, which is false for
  // the Prev and Next functions and nil for Key and Value functions.
  //
  // This function is part of the database.Bucket interface implementation.