Rust
Beginner
1 min read
Defining and Instantiating Structs
Example
#[derive(Debug, Clone, PartialEq)]
struct Point {
x: f64,
y: f64,
}
// Tuple struct — a newtype wrapper
#[derive(Debug, Clone, Copy)]
struct Meters(f64);
// Unit-like struct
#[derive(Debug)]
struct Marker;
fn main() {
// Named-field struct
let origin = Point { x: 0.0, y: 0.0 };
println!("origin = {:?}", origin);
// Field init shorthand
let x = 3.0_f64;
let y = 4.0_f64;
let p = Point { x, y };
println!("p = {:#?}", p);
// Struct update syntax — copy remaining fields from another instance
let q = Point { x: 1.0, ..p };
println!("q = {:?}", q);
// PartialEq derived
println!("p == q : {}", p == q);
println!("p == p.clone() : {}", p == p.clone());
// Tuple struct
let dist = Meters(42.5);
println!("distance = {} m", dist.0);
// Unit-like struct
let _m = Marker;
println!("marker = {:?}", _m);
// Destructuring
let Point { x: px, y: py } = p;
println!("destructured: px={px} py={py}");
}