LANGUAGE » RUST
Struct
Syntax 
Classic C struct:
rust
struct Person {
    name: String,
    age: u8,
}
// Nesting
struct Company {
    ceo: Person,
    profit: u64,
}Tuple struct:
rust
struct MinMax(i64, i64);Unit struct:
rust
struct Unit;
fn main() {
    const myunit = Unit;  // What is it used for?
}Usage 
Instantiate a struct using the values of another struct as base:
rust
#[derive(Debug)]
struct Point {
    x: u8,
    y: u8,
}
fn main() {
    let first_point = Point { x: 10, y: 5 };
    let second_point = Point { x: 20, ..first_point };  // ..first_point MUST be the last
    println!("first_point: {:?}", first_point);
    println!("second_point: {:?}", second_point);
}Destructure into simpler types:
rust
fn main() {
    // Classic C struct
    let point = Point { x: 10, y: 5 };
    let Point { x: x_value, y: y_value } = point;
    println!("x: {}, y: {}", x_value, y_value);
    // Tuple struct
    let minmax = MinMax(0, 100);
    let MinMax(min, max) = minmax;
    println!("min: {}, max: {}", min, max);
}Default 
Automatically generate defaults for a struct:
rust
#[derive(Default)]
struct Point {
    x: u8,
    y: u8,
}Or create your own defaults by implementing the defaulttrait.
Then initialize with defaults:
rust
let point = Point::default();Printing 
To print structures, you can derive the fmt::Debug implementation. Use the {:?} notation.
rust
#[derive(Debug)]
struct Person<'a> {
    name: &'a str,
    age: u8,
}
#[derive(Debug)]
struct Structure(i32);
fn main() {
    let name = "Peter";
    let age = 27;
    let peter = Person { name, age };
    println!("Person: {:?}", peter);
    println!("Pretty-print: {:#?}", peter);
    let mystruct = Structure(12);
    println!("Structure: {:?}", mystruct);
    println!("Pretty-print: {:#?}", mystruct);
}Implementing custom display of structures.
rust
use std::fmt;
#[derive(Debug)]
struct MinMax(i64, i64);
impl fmt::Display for MinMax {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "({}, {})", self.0, self.1)
    }
}
fn main() {
    let minmax = MinMax(0, 14);
    let minmax_str = minmax.to_string();
    println!("Compare structures:");
    println!("Display minmax: {}", minmax);
    println!("Display minmax_str: {}", minmax_str);
    println!("Debug minmax: {:?}", minmax);
}If multiple write!() are needed (such as for an array), you can use the write!()? to indicate that there are more.
rust
use std::fmt;
struct List(Vec<i32>);
impl fmt::Display for List {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        let vec = &self.0;
        write!(f, "[")?;
        for (count, v) in vec.iter().enumerate() {
            if count != 0 { write!(f, ", ")?; }
            write!(f, "{}", v)?;
        }
        write!(f, "]")
    }
}
fn main() {
    let v = List(vec![1, 2, 3]);
    println!("{}", v);
}