CodeSampleX

Пример

winnow 1.0.4: Port a pre-1.0 winnow parser to winnow 1.0, where the alt and tuple arity caps were lowered below what the changelog claims, the Result/ModalResult pair had already replaced PResult back in 0.7.0, dec_uint silently refuses leading zeros on every version, and 0.7.14 added a built-in Pratt parser

Проверенный пример — cargo winnow 1.0.4: Port a pre-1.0 winnow parser to winnow 1.0, where the alt and tuple arity caps were lowered below what the changelog…

sha256:b350c4d0906c65d969286b7014ce1d602e577b7c34f46b9fbb965f77f6481f6f

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
2
Заявленная среда rust 1 linux x64 rust 1 rust cargo

Среды запусков проверки

Окружение Контракт Этапы Запуск
rust 1 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · cargo@1
2026-08-14
rust 1 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · cargo@1
2026-08-18

Кейс

MIGRATION
Цель
Port a pre-1.0 winnow parser to winnow 1.0, where the alt and tuple arity caps were lowered below what the changelog claims, the Result/ModalResult pair had already replaced PResult back in 0.7.0, dec_uint silently refuses leading zeros on every version, and 0.7.14 added a built-in Pratt parser
Пакеты
Символы
  • winnow::combinator::alt
  • winnow::combinator::seq
  • winnow::combinator::expression
  • winnow::combinator::cut_err
  • winnow::combinator::separated
  • winnow::combinator::repeat
  • winnow::ascii::dec_uint
  • winnow::token::literal
  • winnow::ModalResult
  • winnow::Result
Окружение
rust 1
Создан
2026-08-14T20:45:25Z

Контракт

  1. assert the pre-1.0 spellings that did NOT change still hold: literal for tag, take for recognize, the count range first in repeat and separated, the stream advanced through &mut, parse_peek returning (remaining, output), and parse reporting the offset where it stopped
  2. assert alt accepts at most 9 branches on 1.0 so a 12-keyword lexer must nest or pass an array, and both spellings agree on every keyword
  3. assert alt takes the first matching branch rather than the longest, so reordering the same two branches changes which one wins
  4. assert a tuple used as a sequence holds at most 11 parsers, so an 11-parser timestamp works and a 13-parser one needs seq! with ignored _ fields
  5. assert dec_uint stops at a leading zero, yielding 0 and leaving the remaining digits, while digit1 with parse_to accepts zero padding
  6. assert winnow::Result and ModalResult parse identically and glob-importing the crate shadows core Result, but only ErrMode implements ModalError, so cut_err needs the modal form and stops alt falling through to a catch-all
  7. assert the built-in expression Pratt parser honours binding power, left and right associativity, and an operator that returns an error

Файлы

  • Cargo.lock
  • Cargo.toml
  • csx.json
  • src/main.rs

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

anonymous