Slide 19
Slide 19 text
Rustの構造体をRubyのクラスとして利用する
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[magnus::wrap(class = "TreeHouse::Point", free_immediately)] // wrapマクロが構造体に必要な変換処理を自動実装する
pub struct Point {
pub row: usize,
pub column: usize,
}
impl Point {
pub fn new(row: usize, column: usize) -> Self {
Self { row, column }
}
pub fn inspect(&self) -> String {
format!("#", self.row, self.column)
}
pub fn to_s(&self) -> String {
format!("({}, {})", self.row, self.column)
}
pub fn get_row(&self) -> usize {
self.row
}
pub fn get_column(&self) -> usize {
self.column
}
}