今年の言語はRust その8
Rustを学びます
勉強ページは日本語ドキュメント
プログラミング言語Rust
Rustの日本語ドキュメント 2nd Edition
https://doc.rust-jp.rs/book/second-edition/
オリジナル
https://doc.rust-lang.org/book/
5. 構造体
5.2 構造体を使用したプログラミング例
#[derive(Debug)]
struct Rectangle{
width: u32,
height: u32,
}
fn main(){
let rect1 = Rectangle{ width:32, height:50};
println!("{}", area(&rect1));
println!("{:#?}", rect1);
}
fn area(rect: &Rectangle) -> u32{
rect.width * rect.height
}
==成形される
Rectangle {
width: 32,
height: 50
}
5.3 メソッド記法
#[derive(Debug)]
struct Rectangle{
width: u32,
height: u32,
}
impl Rectangle{
fn area(&self) -> u32{
self.width * self.height
}
fn can_hold(&self, other: &Rectangle) -> bool{
self.width > other.width && self.height > other.height
}
}
fn main(){
let rect1 = Rectangle{ width:30, height:50};
let rect2 = Rectangle{ width:10, height:40};
let rect3 = Rectangle{ width:60, height:45};
println!("Can rect1 hold rect2? {}", rect1.can_hold(&rect2));
println!("Can rect1 hold rect3? {}", rect1.can_hold(&rect3));
}
implは複数に分けてもOK.
関連関数としてstatic関数のように扱ってもoK
impl Rectangle{
fn square(size: u32) -> Rectangle{
Rectangle{
width:size,
height:size
}
}
}
fn main(){
let square = Rectangle::square(30);
println!("Can rect1 hold rect3? {:#?}", square);
}
理解した!
次回!
イエス!