lib: refactor filterAttrs

`filter` is a primop which is designed for this task, and it saves
the allocation of some singleton lists here.
This commit is contained in:
Robert Hensing 2024-10-31 16:30:07 +01:00
parent 83e1488c6d
commit 1de8e07216

View File

@ -7,7 +7,7 @@ let
inherit (builtins) head length;
inherit (lib.trivial) isInOldestRelease mergeAttrs warn warnIf;
inherit (lib.strings) concatStringsSep concatMapStringsSep escapeNixIdentifier sanitizeDerivationName;
inherit (lib.lists) foldr foldl' concatMap elemAt all partition groupBy take foldl;
inherit (lib.lists) filter foldr foldl' concatMap elemAt all partition groupBy take foldl;
in
rec {
@ -644,7 +644,7 @@ rec {
filterAttrs =
pred:
set:
removeAttrs set (concatMap (name: if pred name set.${name} then [ ] else [ name ]) (attrNames set));
removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set));
/**
Filter an attribute set recursively by removing all attributes for