Exemple
collection 1.19.1: Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection is identity
Échantillon vérifié pour pub collection 1.19.1: Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection…
sha256:7227421d006842fac6a96b0d2190f4a93f7cbbd5a2ee8a34116cb7c2f7b20d1c
Ce réseau offre une seule chose : un échantillon qui compile. Il l'a exécuté dans un bac à sable et conservé le reçu signé. Il ne note rien et ne garantit rien : si le même code compile chez vous, il ne l'a pas mesuré.
Combien de clés de signature distinctes ont déposé un reçu de contrat réussi. Une seule, c'est l'auteur ; plus d'une signifie que quelqu'un d'autre l'a compilé aussi. Une clé est auto-générée sans identité enregistrée derrière, donc on compte des clés, pas des personnes.
MIT-0
Preuves d'exécution
L'environnement déclaré et les exécutions signées sont séparés, pour que vous voyiez exactement ce que cet échantillon a exécuté et où.
- Base de preuve
- Contrat signé réussi
- Reçus de vérification
- 2
- Clés de signature qui l’ont compilé
- 2
Environnement déclaré
dart 3 linux x64 dart 3 dart pub
Environnements des exécutions de vérification
| Environnement | Contrat | Étapes | Exécution |
|---|---|---|---|
| dart 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · pub@1 |
2026-08-14 |
| dart 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · pub@1 |
2026-08-18 |
Cas
HOW- Objectif
- Compare two Dart Lists, Maps or Sets by their contents, and use one as a cache key, when == on a collection is identity
- Paquets
- Symboles
-
- ListEquality
- MapEquality
- SetEquality
- IterableEquality
- DeepCollectionEquality
- DeepCollectionEquality.unordered
- DeepCollectionEquality.hash
- groupBy
- firstWhereOrNull
- whereNotNull
- HashMap
- Environnement
- dart 3
- Créé
- 2026-08-14T13:05:28Z
Contrat
- assert two Lists with the same contents are not ==, and neither are two Maps nor two Sets, while package:test's equals matcher deep-compares the same values, nested ones included, and passes
- assert a const collection is canonicalized, so const [1, 2] is identical to const [1, 2], that canonicalization is per type argument, and that copying the list loses the equality again
- assert ListEquality compares in order while MapEquality and SetEquality do not, their hashes agree where their equals does, and IterableEquality compares a List against a Set
- assert ListEquality and MapEquality go exactly one level deep, so nested collections are compared with == and only match when the inner values are const-canonicalized
- assert DeepCollectionEquality recurses through nested maps, lists and sets, is already order-insensitive for Sets but not for Lists, that unordered() extends that to Lists as a multiset, and that non-collections fall through to the base equality
- assert a Map used as a key in a plain Map only matches the instance it was stored under, so the cache grows and never hits, while a HashMap given DeepCollectionEquality's equals and hash matches a rebuilt key whatever order its literal was written in
- assert equal structures produce equal DeepCollectionEquality hashes, that the ordered and unordered hashes track their own equalities, and that a HashMap given equals without hashCode misses 2000 freshly built keys without calling the equals it was given even once
- assert groupBy returns exact groups keyed in first-occurrence order, firstWhereOrNull returns null where the SDK's firstWhere throws StateError, and whereNotNull yields the same List<int> as the SDK's nonNulls that deprecates it
- assert Dart records compare by value and work as Map keys, but a record holding a List is back to identity
Fichiers
- csx.json
- lib/equality.dart
- pubspec.lock
- pubspec.yaml
- test/contract_test.dart