========================== Implementation & Test Code ========================== .. need:: (CODE) Implementation follows requirement IDs and architecture specifications. :id: CODE_IMPL_001 :status: active :tags: implementation, code, traceability :links: ARCH_001, ARCH_FUNC_001, ARCH_FUNC_002, ARCH_FUNC_003 The Rust implementation captures traceability via doc comments and stable public APIs. .. need:: (TEST) Test suite provides coverage of requirements. :id: TEST_CODE_001 :status: active :tags: verification, testing, code The native test runner writes `test_results.xml` in JUnit format and maps to the `TEST_*` needs. .. need:: (CODE) Complete example includes both documentation and implementation. :id: CODE_REPO_001 :status: active :tags: repository, structure This example keeps documentation (`*.rst`) next to the Rust source and test artifacts for end-to-end traceability. Code Organization ================= This TSIM implementation is written in **Rust** and keeps the same requirement IDs as the reference example. .. code-block:: text examples/rust_hello_world/ ├── Cargo.toml ├── src/ │ ├── lib.rs # Implementation with requirement IDs in doc comments │ └── bin/ │ └── junit_tests.rs # Native test runner writing JUnit XML ├── test_results.xml # Generated by ./build-and-test.sh └── build-and-test.sh Traceability in Rust Code ========================= In Rust projects, requirement traceability is typically captured via: - module-level doc comments (`//! REQ_*`) - function-level doc comments (`/// REQ_*`) - explicit mapping tables in the documentation The public API in `src/lib.rs` maps directly to: - :need:`REQ_FUNC_001` (ADC conversion) - :need:`REQ_FUNC_002` (5-sample moving average) - :need:`REQ_FUNC_003` / :need:`REQ_FUNC_004` (threshold + hysteresis) Building & Running Tests ======================== .. code-block:: bash cd examples/rust_hello_world cargo build cargo run --bin junit_tests -- test_results.xml Then build the documentation (imports `test_results.xml`): .. code-block:: bash osqar build-docs --project examples/rust_hello_world