diff --git a/flake.nix b/flake.nix index 4e51d15..34d58c0 100644 --- a/flake.nix +++ b/flake.nix @@ -16,5 +16,6 @@ unique = import ./src/unique.nix lib; overrideExisting = import ./src/overrideExisting.nix lib; findFirstIndex = import ./src/findFirstIndex.nix lib; + filterAttrs = import ./src/filterAttrs.nix lib; }; } diff --git a/src/filterAttrs.nix b/src/filterAttrs.nix new file mode 100644 index 0000000..14a2b11 --- /dev/null +++ b/src/filterAttrs.nix @@ -0,0 +1,11 @@ +lib: +let + filterAttrsOld = pred: set: builtins.removeAttrs set (builtins.filter (name: !pred name set.${name}) (builtins.attrNames set)); + + filterAttrsNew = pred: set: builtins.removeAttrs set (builtins.partition (name: pred name set.${name}) (builtins.attrNames set)).wrong; + + bigdata = lib.genAttrs (lib.imap0 (i: _: toString i) (lib.replicate 999999 null)) (_: null); +in { + old = filterAttrsOld (name: value: name == "345" || name == "927") bigdata; + new = filterAttrsNew (name: value: name == "345" || name == "927") bigdata; +}