func (da *Cedar) Key(id int) (key []byte, err error) {
	for id > 0 {
		from := da.Array[id].Check
		if from < 0 {
			return nil, ErrNoPath
		}
		if char := byte(da.Array[from].base() ^ id); char != 0 {
			key = append(key, char)
		}
		id = from
	}
	if id != 0 || len(key) == 0 {
		return nil, ErrInvalidKey
	}
	for i := 0; i < len(key)/2; i++ {
		key[i], key[len(key)-i-1] = key[len(key)-i-1], key[i]
	}
	return key, nil
}
func (da *Cedar) Key(id int) (key []byte, err error) {
	for id > 0 {
		from := da.Array[id].Check
		if from < 0 {
			return nil, ErrNoPath
		}
		if char := byte(da.Array[from].base() ^ id); char != 0 {
			key = append(key, char)
		}
		id = from
	}
	if id != 0 || len(key) == 0 {
		return nil, ErrInvalidKey
	}
	for i := 0; i < len(key)/2; i++ {
		key[i], key[len(key)-i-1] = key[len(key)-i-1], key[i]
	}
	return key, nil
}
func ( da * Cedar ) Key ( id int ) ( key [ ] byte , err error ) { for id > 0 { from := da . Array [ id ] . Check if from < 0 { return nil , ErrNoPath } if char := byte ( da . Array [ from ] . base ( ) ^ id ) ; char != 0 { key = append ( key , char ) } id = from } if id != 0 || len ( key ) == 0 { return nil , ErrInvalidKey } for i := 0 ; i < len ( key ) / 2 ; i ++ { key [ i ] , key [ len ( key ) - i - 1 ] = key [ len ( key ) - i - 1 ] , key [ i ] } return key , nil }
// Key returns the key of the node with the given `id`.
// It will return ErrNoPath, if the node does not exist.
Key returns the key of the node with the given id . It will return ErrNoPath if the node does not exist .