Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Rustdoc crate je webové rozhraní na /rustdoc deklarované objevením z crate, přítomné v topologii, jeho odevzdané projekci i na domovské stránce, ať už jeho producent běžel, nebo ne, a běžící server odpovídá na /rustdoc/ ze stromu, který producent zapsal

Referenční rustdoc, který se z crate vykresluje, je jedním z povrchů, které tento repozitář obsluhuje, s

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Povrch je deklarován z crate tak, jak je poskytovaná dokumentace deklarována z konfigurace webu, takže nic na něm nezávisí na tom, zda ho některý checkout sestavil; built_from pochází ze surface.json producenta a v docs/generated/web.json chybí, protože ten se musí v každém klonu číst stejně. Stranu Rustu tvoří testy web::discover. ADR 0086 rozhoduje o mountu a o tom, proč není pod /docs.

Co to znamená

Reference rustdoc, kterou crate vykresluje, je jedním z povrchů, které tento repozitář poskytuje, s id rustdoc a připojením /rustdoc. Je v topologii od chvíle, kdy je crate: majordomus web list ji jmenuje, domovská stránka běžícího serveru ji nabízí a commitnutá projekce docs/generated/web.json ji nese, ať už v tomto checkoutu někdo stránky vytvořil, nebo ne. Běžící majordomus serve odpovídá na /rustdoc/ ze stromu, který zapsal producent, a když strom ještě není, odpoví 503 jmenujícím příkaz, který ho zapíše, místo nevysvětleného 404.

Princip

web::discover deklaruje povrch z crate, stejně jako deklaruje obsluhovanou dokumentaci z site/config.toml: deklarace závisí na existenci crate, ne na tom, že proběhl build. Průchod generovaným webovým kořenem přeskakuje adresář rustdoc ze stejného důvodu, z jakého přeskakuje docs — zjišťování už povrch zná — a čte jen revizi, kterou tam producent zaznamenal. Ta revize, built_from, je z commitnuté projekce vynechána, protože hodnota lišící se mezi checkouty by způsobila, že by každý klon hlásil projekci jako driftovanou.

Producent scripts/rust-check --doc zapisuje target/web/rustdoc/ s surface.json v web-surface/v1 a úvodní stránkou. Servírování jde přes web::files, hlídaný statický server, který už servíruje /docs/: každý segment cesty požadavku se zkontroluje dřív, než se dotkne souborového systému, a vyřešený soubor musí zůstat uvnitř kanonického kořene.

Jak to vidět

majordomus web explain rustdoc                          # mount, producer, availability, built_from
jq '.surfaces[] | select(.id == "rustdoc")' docs/generated/web.json
scripts/rust-check --doc && majordomus serve            # then /rustdoc/ on the URL it logs
bash test/run.sh 488_rustdoc_discoverable
cargo test --manifest-path apps/majordomus-cli/Cargo.toml web::discover
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test http_serve

Co nepokrývá

Zda je strom, který servíruje, úplný nebo aktuální, je rustdoc-complete a rustdoc-verified-live; toto tvrzení je o tom, že povrch existuje a je dosažitelný. Co nese publikovaný web, je rustdoc-composed-from-the-topology a rustdoc-published. Samotný mount — proč /rustdoc a ne cesta pod /docs nebo /api — je rozhodnutí zaznamenané v ADR 0086, ne něco, co by případ mohl prokázat jako správné.

Proč existuje

Po celou dobu existence crate jeho kontrola tuto referenci při každém běhu vykreslila a nic ji nedeklarovalo: router ji nemohl obsloužit, domovská stránka na ni nemohla odkázat a topologie, z níž se web staví, ji nepojmenovávala. Povrch, který existuje, jen když producent náhodou běžel v jednom checkoutu, je povrch, na který se nikdo nemůže spolehnout, takže deklarace se bere ze samotného crate. test/cases/488_rustdoc_discoverable.sh se ptá topologie dřív, než producent běžel, a obsluhovaného socketu poté.

Detail vykreslený z docs/claims/rustdoc-discoverable.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Rustdoc crate je webové rozhraní na /rustdoc deklarované objevením z crate, přítomné v topologii, jeho odevzdané projekci i na domovské stránce, ať už jeho producent běžel, nebo ne, a běžící server odpovídá na /rustdoc/ ze stromu, který producent zapsal

    Žádná funkce ani odpovědnost v README ji nepojmenovává; tato stránka je místo, kde je uvedena.

  2. 2 · kanonické tvrzení

    rustdoc-discoverabledeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/RUSTDOC.md

  3. 3 · implementace

    apps/majordomus-cli/src/web/discover.rs

  4. 4 · test a scénáře

    Test: test/cases/488_rustdoc_discoverable.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 488_rustdoc_discoverable

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.