Rust — Shapes (enum, trait, pattern matching)
A realistic Rust snippet with an enum carrying data, a trait and impl, exhaustive match, iterators, and Option handling — for testing highlighters, rustc, clippy, and parsers against real ownership-era code.
// Shapes in Rust: an enum with data, a trait with an impl, pattern
// matching, iterators, and Option handling.
#[derive(Debug)]
enum Shape {
Circle { radius: f64 },
Rectangle { width: f64, height: f64 },
}
trait Area {
fn area(&self) -> f64;
}
impl Area for Shape {
fn area(&self) -> f64 {
match self {
Shape::Circle { radius } => std::f64::consts::PI * radius * radius,
Shape::Rectangle { width, height } => width * height,
}
}
}
fn largest(shapes: &[Shape]) -> Option<&Shape> {
shapes.iter().max_by(|a, b| a.area().total_cmp(&b.area()))
}
fn main() {
let shapes = vec![
Shape::Circle { radius: 2.0 },
Shape::Rectangle { width: 3.0, height: 4.0 },
];
for shape in &shapes {
println!("{:?} has area {:.2}", shape, shape.area());
}
if let Some(biggest) = largest(&shapes) {
println!("largest: {:?}", biggest);
}
}
Specifications
- Language
- Rust
- Kind
- realistic snippet
- Lines
- 40
- Encoding
- UTF-8
- Line Endings
- LF
Testing contract
Expected to pass- Scenario
- Compile the file with clippy enabled and run it.
- Expected result
- It prints the area of each shape to two decimals - the circle at radius 2.0 gives 12.57 and the rectangle 3.0 x 4.0 gives 12.00 - and then reports the Circle as largest, because 12.57 exceeds 12.00. The `match` over `Shape` is exhaustive without a wildcard arm, so adding a variant must break the build rather than fall through.
What is a .rs file?
Rust (.rs) is a plain-text source file for the Rust programming language — a statically typed, compiled systems language focused on memory safety without a garbage collector, enforced by its ownership and borrow checker. It features enums with data, pattern matching, traits, generics, and a strong type system.
How to use this file
Use an example .rs file to test syntax highlighters, the rustc compiler and cargo, rustfmt and clippy, and parser or language-detection tooling against real Rust constructs.
How to use this file for testing
“Rust — Shapes (enum, trait, pattern matching)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.
Documented properties for this file: Rust · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.
Code examples
rustc shapes.rs -o prog && ./progRelated files
- rsRust — Hello WorldThe classic hello-world in Rust — fn main and the println! macro — for testing highlighters, rustc, and parsers.

- rsRust Lint Invalid — Unwrap InvalidIntentionally lint-bait SAMPLE rust snippet (unwrap-invalid) for rule-engine tests.

- rsRust Result MapRust Result map chain — realistic error-handling snippet.

- cC — Hello WorldThe classic hello-world in C — an include, main, and printf — for testing highlighters, C compilers, and parsers against the canonical first program.

- cC — Linked list (structs, malloc, pointers)A realistic C program: a singly linked list with a typedef struct, malloc/free memory management, pointer walking, and error handling — for testing highlighters, compilers, and static analysers.

- cC StructC struct SAMPLE for clangd / highlighter fixtures.

Generated by generation/code_samples.py. Free for any use, no attribution required — license.