mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-01-02 13:03:11 +00:00
optimize FilterAddrs implementation
This commit is contained in:
parent
334b79e5a9
commit
6792670726
10
multiaddr.go
10
multiaddr.go
@ -189,14 +189,14 @@ func (m *multiaddr) ValueForProtocol(code int) (value string, err error) {
|
||||
// If all filters return true, the address is kept.
|
||||
func FilterAddrs(a []Multiaddr, filters ...func(Multiaddr) bool) []Multiaddr {
|
||||
b := make([]Multiaddr, 0, len(a))
|
||||
addrloop:
|
||||
for _, addr := range a {
|
||||
good := true
|
||||
for _, filter := range filters {
|
||||
good = good && filter(addr)
|
||||
}
|
||||
if good {
|
||||
b = append(b, addr)
|
||||
if !filter(addr) {
|
||||
continue addrloop
|
||||
}
|
||||
}
|
||||
b = append(b, addr)
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user