История изменений
Исправление Virtuos86, (текущая версия) :
#[derive(Debug)]
struct Point2D(usize, usize);
#[derive(Debug)]
struct Size2D(usize, usize);
#[derive(Debug)]
struct Rect {
point: Point2D,
size: Size2D
}
impl Rect {
fn new(point: Point2D, size: Size2D) -> Self {
Self { point, size }
}
}
impl std::convert::From<(usize, usize, usize, usize)> for Rect {
fn from(rect: (usize, usize, usize, usize)) -> Self {
Self { point: Point2D(rect.0, rect.1), size: Size2D(rect.2, rect.3) }
}
}
fn main() {
let (x, y, w, h) = (0, 1, 2, 3);
let rect1 = Rect::new(Point2D(x, y), Size2D(w, h));
let rect2 = Rect::from((x, y, w, h));
println!("rect1 = {:?}\nrect2 = {:?}", rect1, rect2);
}
https://play.rust-lang.org/?gist=49280f8c9c27cc658ffd7ed1f4592f09&version...
Исходная версия Virtuos86, :
#[derive(Debug)]
struct Point2D(usize, usize);
#[derive(Debug)]
struct Size2D(usize, usize);
#[derive(Debug)]
struct Rect {
point: Point2D,
size: Size2D
}
impl Rect {
fn new(point: Point2D, size: Size2D) -> Self {
Self { point, size }
}
}
impl std::convert::From<(usize, usize, usize, usize)> for Rect {
fn from(rect: (usize, usize, usize, usize)) -> Self {
Self { point: Point2D(rect.0, rect.1), size: Size2D(rect.2, rect.3) }
}
}
fn main() {
let (x, y, w, h) = (0, 1, 2, 3);
let rect1 = Rect::new(Point2D(x, y), Size2D(w, h));
let rect2 = Rect::from((x, y, w, h));
println!("rect1 = {:?}\nrect2 = {:?}", rect1, rect2);
}
https://play.rust-lang.org/?gist=49280f8c9c27cc658ffd7ed1f4592f09&version...