今年の言語は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);

}

理解した!

次回!

イエス!

广告
将在 10 秒后关闭
bannerAds