Sources and Applicability#
Rust Coding Rules Applicability Register
|
status: draft
security: YES
safety: ASIL_B
|
||||
Primary reference: SCRC MISRA C++ cross-reference#
The primary applicability reference is the Rust Cross Reference with MISRA C++ 2023
prepared by the Coding Guidelines Subcommittee of the Safety-Critical Rust Consortium
(SCRC). It is submitted as
pull request #1226
to the safety-critical-rust-coding-guidelines
repository. The register uses the revision at commit 9e81abd4 of 9 September 2026.
The mapping is still under weekly review by the subcommittee and is not merged. The
pinned revision is recorded in the source manifest and must be re-checked, and the
register re-aligned, whenever the mapping changes.
The SCRC cross-reference assesses all 179 MISRA C++:2023 guidelines in three groups. For each guideline it also names the related MISRA C:2025 guideline where one exists, and the SCRC coding guideline that implements it where one exists.
SCRC group |
Count |
Register treatment |
|---|---|---|
Applicable to Rust in general (safe Rust) |
54 |
Mapped to S-CORE rules, or queued for rule assignment. |
Additionally applicable in the presence of unsafe code |
38 |
Mapped to S-CORE rules, or queued for rule assignment. |
Not currently applicable to Rust |
87 |
Excluded, except five guidelines retained with a stated reason. |
At the pinned revision three guidelines have an SCRC coding guideline: 7.0.4, 8.2.2 and 8.2.10. The remaining applicable guidelines have a verdict and a rationale but no SCRC rule text yet, which is the gap the S-CORE catalogue proposes to fill.
How the register follows the SCRC verdict#
Each register row records the SCRC verdict, the related MISRA C:2025 guideline, the SCRC guideline link and category, and the S-CORE disposition:
proposed rust obligation (83): SCRC marks the guideline applicable and one or more S-CORE rules interpret it.
rule assignment pending (9): SCRC marks the guideline applicable but no S-CORE rule covers it yet. These need a new rule or an explicit exclusion decision.
not applicable (82): SCRC marks the guideline not applicable and S-CORE agrees.
retained beyond SCRC (5): SCRC marks the guideline not applicable but S-CORE keeps it as a supporting source for an existing rule, with the reason in the note.
The safe/unsafe distinction is recorded per source guideline and shown in the rule catalogue. It does not by itself set the scope of an S-CORE rule; a rule’s scope and the component’s production, test and tooling profiles decide where it applies.
Both open groups are listed in the review queue below. Resolving them, in either direction, is a review decision and is recorded in the register with a note.
Secondary reference: MISRust#
The paper
MISRust: Mapping MISRA-C++ Coding Guidelines to the Rust Programming Language by Marius Molz, Niels Schneider, Sven Lechner,
Stefan Kowalewski and Alexandru Kampmann (RWTH Aachen University), arXiv:2605.23490v2,
27 August 2026, and its
research dataset
were the starting point of this draft and remain a secondary reference. The
misrust_class column keeps the study’s C1 to C6 classification for every guideline
so that the origin of the rule grouping stays traceable.
Where MISRust and the SCRC cross-reference disagree, the SCRC verdict is followed. The subcommittee’s own analysis of the differences identifies the main weaknesses of the study: compiler warnings treated as language guarantees, raw-pointer operations in safe code overlooked, and foreign interfaces not considered when dismissing C++ library guidelines. The corrections this draft had applied to the study point in the same direction and are now superseded by the SCRC verdicts.
Supporting references#
MISRA C:2025 Addendum 6 assesses the applicability of MISRA C:2025 to Rust, including foreign interfaces. The SCRC cross-reference names the related MISRA C guideline per row, and the register carries that column. Addendum 6 supports the boundary review in SCR-RUST-042. The full MISRA C:2025 rule text was not part of the analysis, so a complete C-rule interpretation is not claimed.
The SCRC coding guidelines themselves are the intended long-term home of Rust-specific rule text. Where an SCRC guideline exists for a mapped source, the register links it; S-CORE rule text for the same source is a candidate contribution, not a competing standard.
Attribution and records#
The SCRC cross-reference is documentation in the consortium repository and is licensed under CC-BY-4.0 per that repository’s COPYRIGHT file. Its verdicts, MISRA C references and guideline links are reproduced unchanged; its rationale text is not copied, and readers should consult the pull request for it. The MISRust classifications are reproduced unchanged from the CC-BY-4.0 research artifacts. Rule grouping, Rust rule text, dispositions, assessment notes and the review queue are S-CORE modifications and additions. Neither the SCRC nor the MISRust authors have reviewed or endorsed this draft.
The register cites MISRA guidelines by number, kind, category and page only; no MISRA guideline text is reproduced, and the MISRA documents are not redistributed here. The source manifest records the documents used by role and content hash.
Review queue#
Guidelines whose S-CORE disposition still diverges from a simple reading of the SCRC verdict. Nine need a rule or an exclusion decision; five are retained beyond the SCRC verdict and need confirmation or removal.
Source ID |
SCRC verdict |
MISRust class |
Source level |
Proposed Rust rules |
Assessment |
|---|---|---|---|---|---|
5.10.1 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; follow Rust API Guidelines naming. No S-CORE rule yet (naming conventions). |
5.13.4 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; unsuffixed literals fall back to i32 through inference. No S-CORE rule yet. |
6.4.2 |
not applicable |
C5 |
Required |
SCRC: not currently applicable, applicable once specialization stabilizes. Retained as supporting source for shadowing review. |
|
7.11.1 |
not applicable |
C4 |
Required |
SCRC: not applicable (no overloads, no NULL macro). Retained: raw null pointers are still constructible in safe Rust. |
|
9.4.2 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust in part (sub-rules on braces/compound statements). No S-CORE rule yet. |
9.5.1 |
safe |
C3 |
Advisory |
rule assignment pending |
SCRC: applies to safe Rust; prefer iterators over index-modifying while loops. No S-CORE rule yet. |
10.1.1 |
safe |
C3 |
Advisory |
rule assignment pending |
SCRC: applies to safe Rust; take &mut only when needed, with trait-definition exception. No S-CORE rule yet. |
10.2.1 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; explicit enum representation, except data-carrying enums. No S-CORE rule yet. |
13.3.4 |
safe |
C2 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; function/vtable pointer comparison is unspecified. No S-CORE rule yet. |
19.0.1 |
not applicable |
C5 |
Required |
SCRC: not applicable (cfg attaches to the next item). Retained: cfg_select and attribute placement still need review. |
|
19.2.3 |
not applicable |
C4 |
Required |
SCRC: not applicable (raw strings supported). Retained as supporting source for include!/path provenance. |
|
21.2.3 |
safe |
C1 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; std::process::Command has platform path-search hazards. No S-CORE rule yet. |
21.6.4 |
not applicable |
C2 |
Required |
SCRC: not applicable (GlobalAlloc dealloc always receives the layout). Retained: allocator customization still needs review. |
|
28.3.1 |
safe |
C2 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; stateful predicates in iterator adapters. No S-CORE rule yet. |
Complete source mapping#
Every entry is a draft requiring review. A link to a Rust rule records an interpretation, not proven enforcement. The original MISRA level is distinct from a Rust rule’s proposed S-CORE level.
Source ID |
SCRC verdict |
MISRust class |
Source level |
Proposed Rust rules |
Assessment |
|---|---|---|---|---|---|
0.0.1 |
safe |
C3 |
Required |
SCRC: applies. Reassess C3: unreachable_code is a partial diagnostic, not a general proof of unreachable-statement absence. |
|
0.0.2 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
0.1.1 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
0.1.2 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
0.2.1 |
safe |
C3 |
Advisory |
SCRC: applies. Reassess C3: warning activation and suppressions matter; no unconditional hard-error guarantee. |
|
0.2.2 |
safe |
C3 |
Required |
SCRC: applies. Reassess C3: unused parameters can compile; underscore patterns and suppression need a policy. |
|
0.2.3 |
safe |
C3 |
Advisory |
SCRC: applies. Reassess C3: unused-type diagnostics depend on visibility and configuration. |
|
0.2.4 |
safe |
C3 |
Advisory |
SCRC: applies. Reassess C3: unused-function diagnostics depend on visibility and configuration. |
|
0.3.1 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
0.3.2 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
4.1.1 |
safe |
C5 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
4.1.2 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
4.1.3 |
safe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
4.6.1 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. Rust evaluation order is well defined. Mapping removed. |
5.0.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
5.7.1 |
safe |
C3 |
Required |
SCRC: applies to safe Rust; nested block comments make accidental commenting-out likely. |
|
5.7.2 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
5.7.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.10.1 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; follow Rust API Guidelines naming. No S-CORE rule yet (naming conventions). |
5.13.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.13.2 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.13.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.13.4 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; unsuffixed literals fall back to i32 through inference. No S-CORE rule yet. |
5.13.5 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.13.6 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
5.13.7 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
6.0.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
6.0.2 |
not applicable |
C6 |
Advisory |
not applicable |
SCRC: not applicable. Follows MISRA C mapping; arrays carry their extent. Mapping removed. |
6.0.3 |
unsafe |
C5 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
6.0.4 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
6.2.1 |
unsafe |
C4 |
Required |
Check symbol attributes across editions; edition 2021 and 2024 differ in unsafe-attribute syntax. |
|
6.2.2 |
unsafe |
C3 |
Required |
SCRC: applies to unsafe Rust; extern declarations shall be type-compatible with the C declaration. |
|
6.2.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
6.2.4 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. No header/linkage mechanism; covered by 6.2.1. Mapping removed. |
6.4.1 |
safe |
C6 |
Required |
Adaptation permits clear same-name transformations; this differs from a blanket shadowing prohibition. |
|
6.4.2 |
not applicable |
C5 |
Required |
SCRC: not currently applicable, applicable once specialization stabilizes. Retained as supporting source for shadowing review. |
|
6.4.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
6.5.1 |
not applicable |
C5 |
Advisory |
not applicable |
SCRC: not applicable. No header files; module system defines the interface. Mapping removed. |
6.5.2 |
not applicable |
C4 |
Advisory |
not applicable |
SCRC: not applicable. Symbol export requires explicit no_mangle/link_name/extern. Mapping removed. |
6.7.1 |
safe |
C4 |
Required |
Broaden beyond unsafe: safe interior-mutability/global synchronization still needs design review. |
|
6.7.2 |
safe |
C4 |
Required |
Broaden beyond unsafe: Send is not a mutual-exclusion mechanism; globals can use safe interior mutability. |
|
6.8.1 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
6.8.2 |
unsafe |
C3 |
Mandatory |
SCRC: applies. Reassess C3: raw dangling pointers can escape compiler reference-lifetime checks. |
|
6.8.3 |
unsafe |
C3 |
Required |
SCRC: applies. Compiler reference guarantees do not extend to every raw-pointer storage pattern. |
|
6.8.4 |
unsafe |
C4 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
6.9.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
6.9.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
7.0.1 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
7.0.2 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
7.0.3 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. char converts only explicitly via u32. Mapping removed. |
7.0.4 |
safe |
C3 |
Required |
SCRC: applies. Restore check obligation from C3: dynamic shift counts can be invalid and operand types need not match. |
|
7.0.5 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
7.0.6 |
not applicable |
C6 |
Required |
not applicable |
SCRC: not applicable. No integral promotion or overload sets. Mapping removed. |
7.11.1 |
not applicable |
C4 |
Required |
SCRC: not applicable (no overloads, no NULL macro). Retained: raw null pointers are still constructible in safe Rust. |
|
7.11.2 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Arrays do not decay to pointers. Mapping removed. |
7.11.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
8.0.1 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
8.1.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
8.1.2 |
unsafe |
C3 |
Advisory |
SCRC: applies to unsafe Rust; closures can capture raw pointers outside borrow-checker guarantees. |
|
8.2.1 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
8.2.2 |
safe |
C3 |
Required |
SCRC: applies to safe Rust (gui_ADHABsmK9FXz, Advisory); as casts hide intent, prefer specific conversion functions. |
|
8.2.3 |
unsafe |
C4 |
Required |
Raw-pointer mutability casts can be safe syntax; validity of subsequent access still needs review. |
|
8.2.4 |
unsafe |
C4 |
Required |
Safe function-pointer casts exist; do not infer ABI correctness from absence of unsafe syntax. |
|
8.2.5 |
unsafe |
C4 |
Required |
transmute is not generally a safer alternative to a cast; review all representation invariants. |
|
8.2.6 |
unsafe |
C4 |
Required |
Pointer casts/reconstruction may occur outside unsafe blocks; scan all code. |
|
8.2.7 |
unsafe |
C4 |
Advisory |
Correction: pointer-to-integer casts do not require an unsafe block. |
|
8.2.8 |
safe |
C4 |
Required |
Address width and provenance obligations apply even when the cast is safe syntax. |
|
8.2.9 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. type_id/type_name are compile-time. Mapping removed. |
8.2.10 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
8.2.11 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
8.3.1 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
8.3.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
8.7.1 |
unsafe |
C4 |
Required |
Pointer APIs differ: some wrapping operations permit intermediate out-of-bounds values. |
|
8.7.2 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
8.9.1 |
safe |
C4 |
Required |
Correction: raw-pointer relational comparisons can be safe expressions; project ordering restrictions still apply. |
|
8.14.1 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
8.18.1 |
unsafe |
C4 |
Mandatory |
Use the Rust API contract: ptr::copy permits overlap; copy_nonoverlapping does not. |
|
8.18.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
8.19.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
8.20.1 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
9.2.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. let syntax prevents the confusion. Mapping removed. |
9.3.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
9.4.1 |
safe |
C6 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
9.4.2 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust in part (sub-rules on braces/compound statements). No S-CORE rule yet. |
9.5.1 |
safe |
C3 |
Advisory |
rule assignment pending |
SCRC: applies to safe Rust; prefer iterators over index-modifying while loops. No S-CORE rule yet. |
9.5.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
9.6.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
9.6.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
9.6.3 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
9.6.4 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
9.6.5 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
10.0.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
10.1.1 |
safe |
C3 |
Advisory |
rule assignment pending |
SCRC: applies to safe Rust; take &mut only when needed, with trait-definition exception. No S-CORE rule yet. |
10.1.2 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
10.2.1 |
safe |
C3 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; explicit enum representation, except data-carrying enums. No S-CORE rule yet. |
10.2.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
10.2.3 |
safe |
C3 |
Required |
SCRC: applies to safe Rust; as casts of enum discriminants to narrow integers can overflow. |
|
10.3.1 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
10.4.1 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
11.3.1 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Do not adopt the artifact claim that arrays never implement Copy: Copy arrays exist when their elements are Copy. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
11.3.2 |
safe |
C4 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
11.6.1 |
unsafe |
C4 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
11.6.2 |
unsafe |
C4 |
Mandatory |
Draft interpretation; applicability and enforcement require review. |
|
11.6.3 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
12.2.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
12.2.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
12.2.3 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
12.3.1 |
unsafe |
C5 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
13.1.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
13.1.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
13.3.1 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
13.3.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
13.3.3 |
safe |
C6 |
Required |
Rust accepts underscore parameter patterns; names and unused-role policy need explicit interpretation. |
|
13.3.4 |
safe |
C2 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; function/vtable pointer comparison is unspecified. No S-CORE rule yet. |
14.1.1 |
safe |
C6 |
Advisory |
Adapt structural public/private restriction into invariant protection; record as project interpretation. |
|
15.0.1 |
safe |
C5 |
Required |
Pin is a type, not a trait; review Unpin/structural pinning only where used. |
|
15.0.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. No move constructors; Clone signature fixed by the trait. Mapping removed. |
15.1.1 |
not applicable |
C3 |
Required |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
15.1.2 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
15.1.3 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
15.1.4 |
unsafe |
C3 |
Advisory |
SCRC: applies to unsafe Rust; MaybeUninit and similar bypass initialization checks. |
|
15.1.5 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
15.8.1 |
unsafe |
C3 |
Required |
SCRC: applies to unsafe Rust; Pin-based move emulation must define self-assignment behavior. |
|
16.5.1 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
16.5.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
16.6.1 |
not applicable |
C3 |
Advisory |
not applicable |
SCRC: not applicable. Verify the rationale against the pinned compiler/configuration before accepting coverage; no automatic waiver. |
17.8.1 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
18.1.1 |
unsafe |
C2 |
Required |
SCRC: applies to unsafe Rust; raw-pointer panic payloads (panic_any) have unclear ownership. |
|
18.1.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
18.3.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
18.3.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
18.3.3 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
18.4.1 |
safe |
C2 |
Required |
SCRC: applies. Restore related obligation from C2: Drop can panic and a second panic during unwinding can abort. |
|
18.5.1 |
safe |
C5 |
Advisory |
Result error propagation and panic/unwinding are distinct; both need explicit policies. |
|
18.5.2 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
19.0.1 |
not applicable |
C5 |
Required |
SCRC: not applicable (cfg attaches to the next item). Retained: cfg_select and attribute placement still need review. |
|
19.0.2 |
safe |
C2 |
Required |
SCRC: applies to safe Rust; prefer functions over function-like macros, variadic macros excepted. |
|
19.0.3 |
safe |
C6 |
Advisory |
Draft interpretation; applicability and enforcement require review. |
|
19.0.4 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.1.1 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.1.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.1.3 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. Undefined identifiers are compile errors. Mapping removed. |
19.2.1 |
safe |
C3 |
Required |
SCRC: applies to safe Rust; include! and path attributes can shadow items in outer scopes. |
|
19.2.2 |
not applicable |
C5 |
Required |
not applicable |
SCRC: not applicable. Invalid include paths are compile errors. Mapping removed. |
19.2.3 |
not applicable |
C4 |
Required |
SCRC: not applicable (raw strings supported). Retained as supporting source for include!/path provenance. |
|
19.3.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.3.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.3.3 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.3.4 |
safe |
C4 |
Required |
Macro expression matching does not ensure single evaluation or absence of hidden effects. |
|
19.3.5 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
19.6.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
21.2.1 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
21.2.2 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
21.2.3 |
safe |
C1 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; std::process::Command has platform path-search hazards. No S-CORE rule yet. |
21.2.4 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
21.6.1 |
safe |
C6 |
Advisory |
Controlled allocation is a proposed project adaptation; do not silently impose a blanket allocation ban. |
|
21.6.2 |
safe |
C5 |
Required |
Drop is not guaranteed to run; mem::forget and leaks are safe operations. |
|
21.6.3 |
unsafe |
C4 |
Required |
Draft interpretation; applicability and enforcement require review. |
|
21.6.4 |
not applicable |
C2 |
Required |
SCRC: not applicable (GlobalAlloc dealloc always receives the layout). Retained: allocator customization still needs review. |
|
21.6.5 |
not applicable |
C4 |
Required |
not applicable |
SCRC: not applicable. No incomplete types. Mapping removed. |
21.10.1 |
unsafe |
C1 |
Required |
SCRC: applies to unsafe Rust; C-variadic arguments (VaList) carry the same hazards as in C. |
|
21.10.2 |
unsafe |
C1 |
Required |
SCRC: applies to unsafe Rust; setjmp/longjmp reachable through FFI or inline assembly and often UB. |
|
21.10.3 |
unsafe |
C1 |
Required |
SCRC: applies to unsafe Rust; signal handling only through platform APIs. |
|
22.3.1 |
safe |
C5 |
Required |
A constant argument to ordinary assert! does not by itself force compile-time evaluation. |
|
22.4.1 |
unsafe |
C2 |
Required |
SCRC: applies to unsafe Rust; errno is writable only through platform APIs. |
|
23.11.1 |
unsafe |
C2 |
Advisory |
SCRC: applies. Reassess C2: raw pointers can be constructed in safe Rust; audit boundaries by operations, not unsafe keywords. |
|
24.5.1 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
24.5.2 |
unsafe |
C1 |
Required |
SCRC: applies to unsafe Rust; ptr::copy and copy_nonoverlapping are the memmove/memcpy analogues. |
|
25.5.1 |
unsafe |
C1 |
Required |
SCRC: applies to unsafe Rust; locale handling requires FFI. |
|
25.5.2 |
unsafe |
C1 |
Mandatory |
SCRC: applies to unsafe Rust; only the FFI part (OS error strings, setenv) is in scope; std::env::var returns owned data. |
|
25.5.3 |
unsafe |
C1 |
Mandatory |
SCRC: applies to unsafe Rust; time zone, locale and errno access through FFI. |
|
26.3.1 |
not applicable |
C2 |
Advisory |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
28.3.1 |
safe |
C2 |
Required |
rule assignment pending |
SCRC: applies to safe Rust; stateful predicates in iterator adapters. No S-CORE rule yet. |
28.6.1 |
safe |
C4 |
Required |
Comment describes a C++-specific move issue; native moves are compiler-checked, custom owners still need review. |
|
28.6.2 |
not applicable |
C2 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
28.6.3 |
unsafe |
C2 |
Required |
SCRC: applies to unsafe Rust; a raw pointer can observe a moved-from location. |
|
28.6.4 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
30.0.1 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |
30.0.2 |
not applicable |
C1 |
Required |
not applicable |
SCRC: not applicable. Native Rust rationale only; reconsider foreign calls, generated code and semantic analogues before exclusion. |