fast_immutable_collections 7.0.1
fast_immutable_collections: ^7.0.1 copied to clipboard
Immutable lists, sets, maps, and multimaps, which are as fast as their native mutable counterparts. Extension methods and comparators for native Dart collections.
7.0.1 - 2021-09-12 #
-
Const
IMap. Example:const IMap<String, int> myMap = IMapConst({1:'a', 2:'b'});Example of const empty map:const IMap<String, int> myMap = IMapConst({}); -
Const
IMapOfSets. Example:const IMapOfSets<String, int> myMapOfSets = IMapOfSetsConst(IMapConst({}));Example of const empty map of sets:const IMapOfSets<String, int> myMapOfSets = IMapOfSetsConst(IMapConst({'a': ISetConst({1, 2})})); -
Breaking change: If you use the
IListConst.withConfig()orISetConst.withConfig()constructors, just remove the.withConfigand it will work. For example:IListConst.withConfig([], ConfigList(isDeepEquals: false))should becomeIListConst([], ConfigList(isDeepEquals: false)).
6.0.0 - 2021-09-05 #
- Breaking change: Note, unless you know what an "async flush mode" is, and use it explicitly, this
breaking change is not important to you, and you don't need to do anything to upgrade. If you want
to know the details, however, keep reading. I have removed the async flush mode. The
async flush mode only flushed after the async gap, but since Dart does not allow
tail-call-optimization (https://github.com/dart-lang/language/issues/1159) it was not possible
to guarantee that very large collections created within the current microtask would not throw a
stack-overflow error when reading values from it. The solution to make it work async was to
tail-call-optimize by hand, which I played with a little bit. For example, check out the
new
IMapimplementations foroperator []andcontainsKey(). However, I'd actually would have to do that for each and every method that traverses the data tree, for each collection in FIC. The amount of work was just too much, so I've decided to remove the async flush mode. The sync mode was recommended anyway (which now is the only mode, meaning I have removed any references to it in the docs), so I guess that won't make much of a difference to anyone.
5.1.3 - 2021-08-31 #
FromIListMixinandFromISetMixinimprovement to deal withIListConst<Never>.
5.1.2 - 2021-07-19 #
IList.sortReversed().
5.1.1 - 2021-07-16 #
ListMap.unsafeFrom()constructor.
5.1.0 - 2021-06-25 #
-
Breaking change: Align head and tail to dart convention as getter like first and last
-
Introduce the OP typedef.
-
IList.initAccess init part of the list. -
IList.inits,IList.tailsmethods. -
IList.splitAtTuples from original list at specified index. -
IList.whereNotReverse predicate for Where. -
Iterable<Tuple2<U, V>>.unzip()extension. -
IList.count(Predicate)count positive predicates. -
IList.iterategenerate IList applying OP multiple times. -
IList.iterateWhilegenerate IList applying OP while Predicate stand. -
IList.spanTuple2 will contain the longest consecutive positive predicate then the rest of the list. -
IList.tabulateApply function start at 0 on multiples dimensions. -
IList.correspondsCheck for correspondence between list and applied function on list. -
IList.lengthCompareISet.lengthCompareDirect size comparison as convenience for composition. -
Arity property on Abstract Tuple.
5.0.5 - 2021-06-27 #
- MapOfSets.isEmptyForKey() and MapOfSets.isNotEmptyForKey().
5.0.4 - 2021-06-24 #
- Introduce the Predicate typedef.
5.0.2 - 2021-06-23 #
List.sortReversed()extension.
5.0.1 - 2021-05-24 #
-
Iterable.restrict()restricts some item to one of those present in this iterable. -
Reuse
ILists andISets only if they have the exact same generic type.
5.0.0 - 2021-05-24 #
-
Const
IList. Example:const IList<int> myList = IListConst([1, 2, 3]);Example of const empty list:const IList<String> myList = IListConst([]); -
Const
ISet. Example:const ISet<int> mySet = ISetConst({1, 2, 3});Example of const empty set:const ISet<String> mySet = ISetConst({}); -
Methods
IList.get(),IList.getOrNull()andIList.getAndMap(). -
Extensions
List.get(),List.getOrNull()andList.getAndMap(). -
Better NNBD for
divideListAsMap()andsortedLike(). -
Better Json serialization for NNBD.
-
Small IMapOfSets.fromIterable() improvement: added
ignoreparameter. -
Breaking change: Removed
empty()constructors fromIListandISet. You can create empty collections usingIList()andISet(), ormyIList.clear()andmyISet.clear(), orIList.withConfig(const [], myConfig)andISet.withConfig(const [], myConfig), orconst IListConst([])andconst ISetConst({}). -
Breaking change: Removed all extensions like
isNullOrEmptyand similar. This was a good idea before NNBD, but now if you use this Dart can't infer nullability anymore. -
Breaking change. Please, add
import "package:collection/collection.dart";to your project. I have removed a few methods, likeIterable.mapIndexed, because they are now present in thecollectionpackage.
4.0.6 - 2021-04-20 #
- Extension
List.withNullsRemoved().
4.0.5 - 2021-04-19 #
- The
contains()methods now acceptnull. - Method
toggle()now returns the correct bool.
4.0.4 - 2021-04-18 #
Iterable.isFirst,isNotFirst,isLastandisNotLast.
4.0.3 - 2021-04-16 #
-
Breaking change. Please, add
import "package:collection/collection.dart";to your project. I have removed the following methods because they are now present in thecollectionpackage:Iterable.firstwhereOrNullIterable.whereNotNull
-
Breaking change:
inRange()of nullable num now returns non-null, andorElseis not optional. -
Added
Iterable.mapNotNullextension. It's similar tomap, but returnsIterable<T>, whereTcan be a non-nullable type. This is equivalent tomappluscast, but has a better name when you are just using it to solve NNBD problems.
3.0.2 - 2021-04-14 #
-
Json serialization support for json_serializable with @JsonSerializable (for IList, ISet, IMap, ListSet, ListSetView).
-
Renamed extension
isNotNullOrZerotoisNotNullNotZero.
2.0.4 - 2021-04-12 #
- Factories
IList<T>.orNull(),ISet<T>.orNull(),IMap<K, V>.orNull(), andIMapofSets<K, V>.orNull(), that help implementcopyWithmethods.
2.0.2 2021/20/03 #
- Breaking changes:
Iterable.removeDuplicateswas renamed toIterable.whereNoDuplicatesto indicate it returns an Iterable.Iterable.removeNullswas renamed toIterable.whereNotNullto indicate it returns an Iterable.List.removeNullsnow is a List extension only. It mutates theList, removing nulls.List.removeDuplicatesnow is a List extension only. It mutates theList, removing all duplicates.Set.removeNullsnow is a Set extension only. It mutates theSet, removing all nulls.
2.0.1 - 2021-03-03 #
- Nullsafety improvements.
- isNotNullOrEmpty getter renamed to isNotNullNotEmpty.
- isEmptyButNotNull getter to isEmptyNotNull.
1.0.28 - 2021-02-09 #
- More efficient Iterable.sortedLike() and List.sortLike() extensions.
- Set.diffAndIntersect(), Iterable.everyIs() and Iterable.anyIs() extensions.
1.0.26 - 2021-01-28 #
- Better generics compatibility for
equalItemsAndConfig.
1.0.18 - 2021-01-19 #
IList.replace().ISet.difference(),intersection,unionnow accept iterables.
1.0.10 - 2021-01-18 #
areSameImmutableCollection()andareImmutableCollectionsWithEqualItems()functions.
1.0.9 - 2021-01-12 #
- Initial version.