thesis/tex/code/trait.rs

35 lines
610 B
Rust
Raw Normal View History

trait Muoto {
fn pinta_ala(&self) -> u32;
}
struct Suorakulmio {
x: u32,
y: u32,
}
struct Ympyra {
r: f64,
}
impl Muoto for Suorakulmio {
fn pinta_ala(&self) -> u32 {
self.x * self.y
}
}
impl Muoto for Ympyra {
fn pinta_ala(&self) -> u32 {
(3.141 * self.r * self.r) as u32
}
}
fn main() {
let muoto1 = Suorakulmio { x: 15, y: 10 };
let muoto2 = Ympyra { r: 8.5 };
println!("Suorakulmion pinta-ala: {}", muoto1.pinta_ala());
println!("Ympyrän pinta-ala: {}", muoto2.pinta_ala());
}
// Suorakulmion pinta-ala: 150
// Ympyrän pinta-ala: 226