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 claims…

sha256:b350c4d0906c65d969286b7014ce1d602e577b7c34f46b9fbb965f77f6481f6f

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 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