aboutsummaryrefslogtreecommitdiff
path: root/object/tree/remove.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-30 05:40:58 +0000
committerGravatar Runxi Yu2026-03-30 05:44:56 +0000
commitaa7e2873aa4da53fbaa4774fdd33f5af20c1afb0 (patch)
tree0d1367f693324ea8287ccef52ba524f8515ca146 /object/tree/remove.go
parentREADME, etc.: Use proper unicode hyphens :P (diff)
signatureNo signature
object/tree: Add helpers and cleanup v0.1.152
Diffstat (limited to 'object/tree/remove.go')
-rw-r--r--object/tree/remove.go14
1 files changed, 7 insertions, 7 deletions
diff --git a/object/tree/remove.go b/object/tree/remove.go
index 9eb42028..fe4fda32 100644
--- a/object/tree/remove.go
+++ b/object/tree/remove.go
@@ -3,6 +3,7 @@ package tree
import (
"bytes"
"fmt"
+ "slices"
)
// RemoveEntry removes a tree entry by name.
@@ -11,13 +12,12 @@ func (tree *Tree) RemoveEntry(name []byte) error {
return fmt.Errorf("object: tree: entry %q not found", name)
}
- for i := range tree.Entries {
- if bytes.Equal(tree.Entries[i].Name, name) {
- copy(tree.Entries[i:], tree.Entries[i+1:])
- tree.Entries = tree.Entries[:len(tree.Entries)-1]
-
- return nil
- }
+ index := slices.IndexFunc(tree.Entries, func(entry TreeEntry) bool {
+ return bytes.Equal(entry.Name, name)
+ })
+ if index >= 0 {
+ tree.Entries = slices.Delete(tree.Entries, index, index+1)
+ return nil
}
return fmt.Errorf("object: tree: entry %q not found", name)