示例
zerovec-derive 0.11.6: zerovec_derive
已验证示例 — cargo zerovec-derive 0.11.6: zerovec_derive. contract 在 rust 1 · linux alpine/x64 · docker 上运行并通过: zerovec_derive make_ule generates a ULE type and…
sha256:19c1e3e7dbc6bcf98b384487d53ed75365090ccf3e718bb760d8e2b0be1c3d76
本网络只提供一件事:能构建的样本。它在沙箱中运行并保留签名回执。它不评级、不担保——同样的代码能否在你的环境构建,它没有测量过。
提交了通过的契约回执的不同签名密钥数量。为 1 表示只有作者;大于 1 表示还有其他人构建过。密钥是自行生成的,背后没有注册身份,因此计的是密钥而非人。
MIT-0
执行证据
声明的环境与签名的运行分开呈现,你可以看到这个样本究竟运行了什么、在哪里运行。
- 证据依据
- 签名契约通过
- 验证回执
- 1
- 构建过它的签名密钥
- 1
声明的环境
linux · alpine · musl x64 cargo
验证运行环境
| 环境 | 契约 | 阶段 | 运行日期 |
|---|---|---|---|
| rust 1 · linux alpine/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · cargo@1rust:1-alpine@sha256:a10e64dd139b… |
2026-10-09 |
案例
HOW- 目标
- verify zerovec_derive in pkg:cargo/zerovec-derive@0.11.6
- 符号
-
- zerovec_derive
- 创建时间
- 2026-10-09T04:33:30Z
契约
- zerovec_derive make_ule generates a ULE type and AsULE implementation for fixed-size structs
- zerovec_derive make_ule generates a ULE type and byte validator for fieldless enums
- zerovec_derive ULE derives the ULE trait for packed C-repr structs
- zerovec_derive make_varule generates a VarULE type for variable-length structs stored in VarZeroVec
文件
- Cargo.lock
- Cargo.toml
- PROMPT.md
- csx.json
- spec.json
- src/lib.rs
- test/contract.rs
源代码
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "proc-macro2"
version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
dependencies = [
"proc-macro2",
]
[[package]]
name = "sample-zerovec-derive"
version = "1.0.0"
dependencies = [
"zerovec",
"zerovec-derive",
]
[[package]]
name = "serde"
version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "syn"
version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "unicode-ident"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
[[package]]
name = "zerofrom"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
[[package]]
name = "zerovec"
version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
dependencies = [
"serde",
"zerofrom",
"zerovec-derive",
]
[[package]]
name = "zerovec-derive"
version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[package]
name = "sample-zerovec-derive"
version = "1.0.0"
edition = "2021"
publish = false
[dependencies]
zerovec-derive = "=0.11.6"
zerovec = { version = "=0.11.6", features = ["derive", "alloc"] }
[[bin]]
name = "contract"
path = "test/contract.rs"
Clean-room public code sample — generation instructions
Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.
A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.
Goal: verify zerovec_derive in pkg:cargo/zerovec-derive@0.11.6
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:cargo/zerovec-derive@0.11.6
Demonstrate these symbols/APIs:
- zerovec_derive
Required runtime conditions:
- ecosystem: cargo
- language: rust
- packageManager: cargo@1.97.1
Rules:
- One focused purpose; the smallest project that proves the goal.
- Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
- Pin every dependency with a lockfile so resolution is reproducible.
- No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
- No personal names, emails, company names, or project identifiers of any kind.
- No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
- Keep it under 200 files and 256KB packed.
{"case":{"caseId":"case:sha256:4c495a124e927e2890742600b690774eb73337d8bab2a7f0a658dade95bb794e","contract":["zerovec_derive make_ule generates a ULE type and AsULE implementation for fixed-size structs","zerovec_derive make_ule generates a ULE type and byte validator for fieldless enums","zerovec_derive ULE derives the ULE trait for packed C-repr structs","zerovec_derive make_varule generates a VarULE type for variable-length structs stored in VarZeroVec"],"goal":"verify zerovec_derive in pkg:cargo/zerovec-derive@0.11.6","kind":"HOW","packages":["pkg:cargo/zerovec-derive@0.11.6"],"schemaVersion":1,"symbols":["zerovec_derive"]},"contractCommand":["cargo","run","--offline"],"environment":{"arch":"x64","distro":"alpine","ecosystem":"cargo","libc":"musl","os":"linux","packageManager":"cargo","schemaVersion":1},"license":"MIT-0","packages":["pkg:cargo/zerovec-derive@0.11.6"],"schemaVersion":1,"subject":"pkg:cargo/zerovec-derive@0.11.6","symbols":["zerovec_derive"],"verifierAdapter":"cargo@1"}
{
"schemaVersion": 1,
"goal": "verify zerovec_derive in pkg:cargo/zerovec-derive@0.11.6",
"kind": "HOW",
"packages": [
"pkg:cargo/zerovec-derive@0.11.6"
],
"symbols": [
"zerovec_derive"
],
"runtimeConditions": {
"ecosystem": "cargo",
"language": "rust",
"packageManager": "cargo@1.97.1"
}
}
//! Clean-room verification sample for zerovec-derive.
pub use zerovec_derive::*;
use zerovec::ule::AsULE;
use zerovec::ule::ULE as UleTrait;
use zerovec::{VarZeroVec, ZeroVec};
use zerovec_derive::{make_ule, make_varule, ULE};
// 1. make_ule generates a ULE type and AsULE implementation for fixed-size structs
#[make_ule(PointULE)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
struct Point {
x: u32,
y: u32,
}
// 2. make_ule generates a ULE type and byte validator for fieldless enums
#[make_ule(StatusULE)]
#[repr(u8)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
enum Status {
Pending = 0,
Active = 1,
Completed = 2,
}
// 3. ULE derives the ULE trait for packed C-repr structs
#[repr(C, packed)]
#[derive(ULE, Clone, Copy, Debug, PartialEq, Eq)]
struct DirectUle {
id: u8,
value: <u32 as AsULE>::ULE,
}
// 4. make_varule generates a VarULE type for variable-length structs stored in VarZeroVec
#[make_varule(MessageULE)]
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
struct Message<'a> {
id: u32,
text: &'a str,
}
fn main() {
// 1. make_ule for struct
let points = [
Point { x: 10, y: 20 },
Point { x: 30, y: 40 },
Point { x: 50, y: 60 },
];
let zv: ZeroVec<Point> = points.iter().copied().collect();
assert_eq!(zv.len(), 3);
assert_eq!(zv.get(0), Some(Point { x: 10, y: 20 }));
assert_eq!(zv.get(1), Some(Point { x: 30, y: 40 }));
assert_eq!(zv.get(2), Some(Point { x: 50, y: 60 }));
let bytes = zv.as_bytes();
let reparsed: ZeroVec<Point> = ZeroVec::parse_bytes(bytes).expect("parse Point zerovec");
assert_eq!(reparsed.get(1), Some(Point { x: 30, y: 40 }));
// 2. make_ule for enum
assert!(StatusULE::parse_bytes_to_slice(&[0]).is_ok());
assert!(StatusULE::parse_bytes_to_slice(&[1]).is_ok());
assert!(StatusULE::parse_bytes_to_slice(&[2]).is_ok());
assert!(StatusULE::parse_bytes_to_slice(&[3]).is_err());
assert!(StatusULE::parse_bytes_to_slice(&[255]).is_err());
let statuses = [Status::Pending, Status::Active, Status::Completed];
let status_zv: ZeroVec<Status> = statuses.iter().copied().collect();
assert_eq!(status_zv.get(1), Some(Status::Active));
// 3. derive(ULE) directly
let direct = DirectUle {
id: 42,
value: 9999u32.to_unaligned(),
};
let direct_slice = [direct];
let direct_bytes = DirectUle::slice_as_bytes(&direct_slice);
assert_eq!(direct_bytes.len(), 5);
let parsed_direct = DirectUle::parse_bytes_to_slice(direct_bytes).expect("parse DirectUle");
assert_eq!(parsed_direct[0].id, 42);
assert_eq!(u32::from_unaligned(parsed_direct[0].value), 9999);
// 4. make_varule for variable-length struct
let msg1 = Message {
id: 1,
text: "hello",
};
let msg2 = Message {
id: 2,
text: "zerovec",
};
let messages = [msg1.clone(), msg2.clone()];
let vzv: VarZeroVec<MessageULE> = VarZeroVec::from(&messages[..]);
assert_eq!(vzv.len(), 2);
let first = vzv.get(0).expect("first element");
assert_eq!(first.id, 1u32.to_unaligned());
assert_eq!(&first.text, "hello");
assert_eq!(Message::from(first), msg1);
let vzv_bytes = vzv.as_bytes();
let reparsed_vzv: VarZeroVec<MessageULE> =
VarZeroVec::parse_bytes(vzv_bytes).expect("parse VarZeroVec");
assert_eq!(reparsed_vzv.len(), 2);
let second = reparsed_vzv.get(1).expect("second element");
assert_eq!(second.id, 2u32.to_unaligned());
assert_eq!(&second.text, "zerovec");
assert_eq!(Message::from(second), msg2);
println!("All zerovec_derive contract assertions passed successfully.");
}
原始种子者
匿名