เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปƒเบ™ Rust. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ (เบ‚เป‰เบญเบเบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ•เบญเบ™เปเบฅเบ‡เบซเบผเบทเปƒเบ™เบ—เป‰เบฒเบเบญเบฒเบ—เบดเบ”). เป€เบเบกเปเบกเปˆเบ™เบขเบนเปˆเป„เบเบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš, เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ›เบฐเบชเบปเบšเบเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™. เบ‚เป‰เบญเบเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰ เปเบฅเบฐเบšเบฒเบ‡เบ‚เปเป‰เบชเบฑเบ‡เป€เบเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบเบกเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ•เบปเป‰เบ™.

Skillbox เปเบ™เบฐเบ™เปเบฒ: เบซเบผเบฑเบเบชเบนเบ”เบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบญเบ‡เบ›เบต "เบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบฑเบš PRO".

เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™: เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ "Habr" - เบชเปˆเบงเบ™เบซเบผเบธเบ” 10 rubles เป€เบกเบทเปˆเบญเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™เบซเบผเบฑเบเบชเบนเบ” Skillbox เป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบปเปˆเบ‡เป€เบชเบตเบก "Habr".

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Rust?

เบ‚เป‰เบญเบเป€เบฅเบทเบญเบเบžเบฒเบชเบฒเบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เบเบดเบ™เบซเบผเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เปเบฅเบฐเบ‚เป‰เบญเบเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบฅเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบก. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เป€เบเบก, เบ‚เป‰เบญเบเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‡เปˆเบฒเบเป†เปƒเบ™ Rust. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบ‚เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเป€เบชเบฅเบตเบžเบฒเบšเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เบฝเบ™เป€เบเบก.

เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เป€เบเบกโ€‹เปเบฅเบฐโ€‹เป€เบเบกโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เปƒเบ”โ€‹?

เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบเบกเปเบกเปˆเบ™เบกเปˆเบงเบ™! เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบซเบ”เบœเบปเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ "เป€เบฎเบทเบญเบ™" เบ‚เป‰เบญเบเป€เบฅเบทเบญเบเบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบงเบฝเบเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบเบกเบซเบเบฑเบ‡? เบ‚เป‰เบญเบเบขเบฒเบเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบณเบฅเบญเบ‡เป€เบ—เบ™เบ™เบดเบ”เบ—เบตเปˆเบฅเบงเบกเป€เบญเบปเบฒ Cities Skylines, Zoo Tycoon, Prison Architect เปเบฅเบฐ tennis เป€เบญเบ‡. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เป€เบเบกเบเปˆเบฝเบงเบเบฑเบšเป‚เบฎเบ‡เบฎเบฝเบ™ tennis เบšเปˆเบญเบ™เบ—เบตเปˆเบ›เบฐเบŠเบฒเบŠเบปเบ™เบกเบฒเบซเบผเบดเป‰เบ™.

เบเบฒเบ™เบเบถเบเบญเบปเบšเบฎเบปเบกเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Rust, เปเบ•เปˆเบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ‚เป‰เบญเบเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™ pixel shaders เปเบฅเบฐเปƒเบŠเป‰ drag-n-drop, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบทเบ”เบซเบเบธเปˆเบ™เบ—เบตเปˆเบชเบธเบ”.

เบ‚เป‰เบญเบเบžเบปเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเบ—เปˆเบฒเบ™:

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป€เบเบก Rust เบซเบผเบฒเบ, เบชเบธเบ”เบ—เป‰เบฒเบเป€เบฅเบทเบญเบ Piston เปเบฅเบฐ ggez. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบ‚เป‰เบญเบเป€เบฅเบทเบญเบ ggez เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบเบก 2D เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ modular เบ‚เบญเบ‡ Piston เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เป€เบเบตเบ™เป„เบ›เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบปเบง (เบซเบผเบทเบœเบนเป‰เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Rust เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”).

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบเบก

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบšเบฒเบ‡เป€เบงเบฅเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ "เบ—เบตเปˆเบ”เบดเบ™", เบ›เบฐเบŠเบฒเบŠเบปเบ™เปเบฅเบฐเบชเบฐเบซเบ™เบฒเบกเบเบดเบฅเบฒ tennis. เบ›เบฐเบŠเบฒเบŠเบปเบ™เบ•เป‰เบญเบ‡เบเป‰เบฒเบเป„เบ›เบญเป‰เบญเบกเบฎเบญเบšเบชเบฒเบ™เปเบฅเบฐเบฅเปเบ–เป‰เบฒ. เบœเบนเป‰เบ™เบ•เป‰เบญเบ‡เบกเบตเบ—เบฑเบเบชเบฐเบ—เบตเปˆเบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เบงเบ™เบกเบตเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ„เบปเบ™เปƒเบซเบกเปˆเปเบฅเบฐเบชเบฒเบ™, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบŸเบฃเบตเบญเบตเบเบ•เปเปˆเป„เบ›.

เบ„เบดเบ”เบงเปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เบœเปˆเบฒเบ™เป„เบ›, เบ‚เป‰เบญเบเป„เบ”เป‰เป„เบ›เป€เบฎเบฑเบ”เบงเบฝเบ.

เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบเบก

เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: เบงเบปเบ‡เบกเบปเบ™ เปเบฅเบฐเบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบญเบปเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบ ggez เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบฎเบนเบšเบงเบปเบ‡เบกเบปเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบˆเป. เบญเบฑเบ”เบชเบฐเบˆเบฑเบ™! เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเบฒเบ‡ abstractions. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบˆเบฐ abstract เบญเบญเบโ€‹เบˆเบฒเบโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เป€เบเบกโ€‹เป„เบ”เป‰โ€‹. เปเบ•เปˆเบฅเบฐเบงเบฑเบ”เบ–เบธเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰:

// the game object trait
trait GameObject {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()>;
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()>;
}
 
// a specific game object - Circle
struct Circle {
    position: Point2,
}
 
 impl Circle {
    fn new(position: Point2) -> Circle {
        Circle { position }
    }
}
impl GameObject for Circle {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()> {
        Ok(())
    }
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
        let circle =
            graphics::Mesh::new_circle(ctx, graphics::DrawMode::Fill, self.position, 100.0, 2.0)?;
 
         graphics::draw(ctx, &circle, na::Point2::new(0.0, 0.0), 0.0)?;
        Ok(())
    }
}

เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบกเบตเบฅเบฒเบเบŠเบทเปˆเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบญเบฑเบšเป€เบ”เบ” เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบ™เบงเบปเบ‡เบ—เบตเปˆเบ‡เบฒเบกเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™.

mpl event::EventHandler for MainState {
    fn update(&mut self, context: &mut Context) -> GameResult<()> {
        // Update all objects
        for object in self.objects.iter_mut() {
            object.update(context)?;
        }
 
        Ok(())
    }
 
    fn draw(&mut self, context: &mut Context) -> GameResult<()> {
        graphics::clear(context);
 
        // Draw all objects
        for object in self.objects.iter_mut() {
            object.draw(context)?;
        }
 
        graphics::present(context);
 
        Ok(())
    }
}

main.rs เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบžเบฝเบ‡โ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปเบเบโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบเบฒเบ™โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™:
เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ -> เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบŠเบฑเบšเบชเบดเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” (เบฎเบนเบšเบžเบฒเบš)
src
- เบซเบปเบงเปœเปˆเบงเบ
โ€” game_object.rs
โ€” circle.rs
โ€” main.rs -> เบชเบฒเบเบซเบผเบฑเบ

เบ„เบปเบ™, เบŠเบฑเป‰เบ™เปเบฅเบฐเบฎเบนเบšเบžเบฒเบš

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธเป€เบเบกเบšเบธเบเบ„เบปเบ™เปเบฅเบฐเป‚เบซเบผเบ”เบฎเบนเบšเบžเบฒเบš. เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฐเป€เบšเบทเป‰เบญเบ‡ 32 * 32.

เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

เบชเบฐ เปœเบฒเบก เป€เบ—เบฑเบ™เบ™เบดเบ”

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบชเบถเบโ€‹เบชเบฒโ€‹เบงเปˆเบฒโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบก tennis เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เปเบ™เบงโ€‹เปƒเบ”, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เบˆเบฒเบ 4*2 เบเบฐโ€‹เป€เบšเบทเป‰เบญเบ‡. เปƒเบ™โ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เบตเป‰โ€‹, เบซเบผเบทโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบต 8 เบเบฐโ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เปเบเบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบซเบฒเบโ€‹. เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบเบฐเป€เบšเบทเป‰เบญเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡.

เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบเบฐเป€เบšเบทเป‰เบญเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง: 1 เปเบฅเบฐ 2.

เปเบ•เปˆเบฅเบฐเบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบชเบฒเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฐเป€เบšเบทเป‰เบญเบ‡ 1 เบซเบผเบทเบเบฐเป€เบšเบทเป‰เบญเบ‡ 2. เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบงเบฒเบ‡เบญเบญเบเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบดเบซเบผเบท flipped 180 เบญเบปเบ‡เบชเบฒ.

เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™ (เบเบฒเบ™เบ›เบฐเบเบญเบš).

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบ„เบปเบ™เปเบฅเบฐเปเบœเบ™เบ—เบตเปˆ, เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰: เป€เบกเบทเปˆเบญเบเบปเบ”เบ›เบธเปˆเบก, เบงเบฑเบ”เบ–เบธเบ–เบทเบเป€เบฅเบทเบญเบ, เปเบฅเบฐเบเบฒเบ™เบ„เบฅเบดเบเบงเบฒเบ‡เบกเบฑเบ™เป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ›เบธเปˆเบก 1 เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบชเบฒเบ™, เปเบฅเบฐเบ›เบธเปˆเบก 2 เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบœเบนเป‰เบ™.

เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆ 1 เปเบฅเบฐ 2 เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบžเบตเปˆเบก wireframe เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบงเบฑเบ”เบ–เบธเปƒเบ”เบ–เบทเบเป€เบฅเบทเบญเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบท.

เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

เบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบฅเบฐ refactoring

เบ”เบฝเบงเบ™เบตเป‰เบ‚เป‰เบญเบเบกเบตเบงเบฑเบ”เบ–เบธเป€เบเบกเบซเบผเบฒเบเบขเปˆเบฒเบ‡: เบ„เบปเบ™, เบชเบฒเบ™ เปเบฅเบฐเบŠเบฑเป‰เบ™. เปเบ•เปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰ wireframes เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบšเบญเบเบงเปˆเบฒเบงเบฑเบ”เบ–เบธเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบชเบฒเบ—เบดเบ”, เบซเบผเบทเบงเปˆเบฒเบเบญเบšเปเบกเปˆเบ™เปเบ•เป‰เบกเบžเบฝเบ‡เปเบ•เปˆ. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบ.

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ เบเบณ เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบดเบ”เบ„เบทเบ™ เปƒเปเปˆ เปƒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบ‚เปเป‰ เบˆเบณ เบเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡:

  • เบเบฒเบ™เบกเบตเปœเปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบชเบฐเปเบ”เบ‡ เปเบฅเบฐ เบญเบฑเบšเป€เบ”เบ”เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเป€เบžเบฒเบฐเบงเปˆเบฒเปœเปˆเบงเบเบ‡เบฒเบ™เบ™เบฑเป‰เบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ” โ€œเบฎเบนเป‰โ€ เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฐเปเบ”เบ‡เป„เบ”เป‰ - เบฎเบนเบšเบžเบฒเบš เปเบฅเบฐ wireframe;
  • เบเบฒเบ™เบ‚เบฒเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปเบฅเบฐเบžเบถเบ”เบ•เบดเบเปเบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบšเบธเบเบ„เบปเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” is_build_mode เบซเบผเบทเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบถเบ”เบ•เบดเบเปเบฒ). เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเปเบฅเบฐเบ”เบปเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Rust. เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบ—เป‰เป†เปเบกเปˆเบ™เบฎเบนเบšเปเบšเบš;
  • เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบกเบญเบšเบซเบกเบฒเบเบ›เบฐเบŠเบฒเบŠเบปเบ™เปƒเบซเป‰เบเบฑเบšเบชเบฒเบ™;
  • เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบ•เบปเบงเป€เบญเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบญเบญเบเบˆเบฒเบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเบ•เบทเปˆเบกเบญเบตเบเปเบฅเบฐเบ„เบปเป‰เบ™เบžเบปเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ ECS - เบฅเบฐเบšเบปเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบปเบงเปœเปˆเบงเบ, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เป€เบเบก. เบ™เบตเป‰เปเบกเปˆเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ ECS:

  • เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเป€เบซเบ”เบœเบปเบ™;
  • เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบกเปเบฅเบฐเบ”เบปเบ;
  • เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบชเบนเบ™เบเบฒเบ‡.

ECS เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเป‚เบ”เบเบชเบฒเบกเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™:

  • entities - เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบ•เบปเบงเบฅเบฐเบšเบธเบซเบกเบฒเบเป€เบ–เบดเบ‡ (เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบ™, เบšเบฒเบ™, เบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบทเปˆเบ™);
  • เบญเบปเบ‡เบ›เบฐเบเบญเบš - เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบกเปˆเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบžเบงเบเบกเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡ - rendering component, เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™;
  • เบฅเบฐเบšเบปเบš - เบžเบงเบเป€เบ‚เบปเบฒเปƒเบŠเป‰เบ—เบฑเบ‡เบงเบฑเบ”เบ–เบธเปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบš, เบšเบงเบเบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบŠเป‰เบณเบœเปˆเบฒเบ™เบ—เบธเบเบซเบปเบงเปœเปˆเบงเบเบ—เบตเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™ เปเบฅเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเบถเบเบชเบฒเบกเบฑเบ™, เบกเบฑเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ ECS เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบ—เบญเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เบˆเบฑเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบซเบ™เปˆเบงเบโ€‹เบ‡เบฒเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹;
  • เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบฅเบฐเบซเบฑเบ” jumble เบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบก;
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบŠเบฑเปˆเบ™ is_build_mode เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡ wireframe เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบงเบเบฑเบ™ - เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” ECS.

เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ -> เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบŠเบฑเบšเบชเบดเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” (เบฎเบนเบšเบžเบฒเบš)
src
- เบญเบปเบ‡เบ›เบฐเบเบญเบš
โ€” position.rs
โ€” person.rs
โ€” tennis_court.rs
โ€” floor.rs
- wireframe.rs
โ€” mouse_tracked.rs
- เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™
โ€”mouse.rs
- เบฅเบฐเบšเบปเบš
โ€” rendering.rs
โ€” constants.rs
โ€” utils.rs
โ€” world_factory.rs -> เบซเบ™เป‰เบฒเบ—เบตเปˆเป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เป‚เบฅเบ
โ€” main.rs -> เบชเบฒเบเบซเบผเบฑเบ

เบžเบงเบเป€เบฎเบปเบฒเบกเบญเบšเปเบฒเบเบ„เบปเบ™เปƒเบซเป‰เบชเบฒเบ™

ECS เป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบกเบตเบงเบดเบ—เบตเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเป€เบซเบ”เบœเบปเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบฑเป‰เบ™. เปเบฅเบฐเบ™เบตเป‰, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ‚เบญเบ‡เบ›เบฐเบŠเบฒเบŠเบปเบ™เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบฒเบ™.

เบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบ”เปˆ:

  • เป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฒเบ™เบ—เบตเปˆเบกเบญเบšเปเบฒเบเปƒเบซเป‰เบšเบธเบเบ„เบปเบ™;
  • เป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบปเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบเปƒเบซเป‰ TennisCourt;
  • เป€เบžเบตเปˆเบก CourtChoosingSystem, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ™เปเบฅเบฐเบชเบฒเบ™, เบเบงเบ”เบžเบปเบšเบชเบฒเบ™เบ—เบตเปˆเบกเบตเปเบฅเบฐเปเบˆเบเบขเบฒเบเบœเบนเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ;
  • เป€เบžเบตเปˆเบกเบฅเบฐเบšเบปเบš PersonMovementSystem, เป€เบŠเบดเปˆเบ‡เบŠเบญเบเบซเบฒเบ„เบปเบ™เบ—เบตเปˆเบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบชเบฒเบ™, เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบปเปˆเบ‡เบ„เบปเบ™เป„เบ›เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบซเบผเบดเป‰เบ™ Rust เปƒเบ™ 24 เบŠเบปเปˆเบงเป‚เบกเบ‡: เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™

Summing up

เบ‚เป‰เบญเบเบกเบฑเบเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบเบกเบ‡เปˆเบฒเบเป†เบ™เบตเป‰เปเบ—เป‰เป†. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ‚เป‰เบญเบเบ”เบตเปƒเบˆเบ—เบตเปˆเบ‚เป‰เบญเบเปƒเบŠเป‰ Rust เบ‚เบฝเบ™เบกเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ:

  • Rust เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™;
  • เบกเบฑเบ™เบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”, Rust เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบก;
  • เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เปเบกเปˆเบ™เป€เบขเบฑเบ™;
  • เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบซเบฑเบ™เป„เบ›เบซเบฒ cloning, เบชเปเบฒเป€เบ™เบปเบฒเบซเบผเบทเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบทเปˆเบ™เป†, เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบกเบฑเบเบˆเบฐเป€เบฎเบฑเบ”เปƒเบ™ C ++;
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เปƒเบŠเป‰เบ‡เปˆเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ”เป‰เบ”เบตเบซเบผเบฒเบ;
  • เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเป„เบ”เป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ 99% เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เปเบฅเบฐเปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡ compiler เปเบกเปˆเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เป€เบซเบฑเบ™.

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบกเปƒเบ™ Rust เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เปเบ•เปˆเบกเบตเบŠเบธเบกเบŠเบปเบ™เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบžเปเบชเบปเบกเบ„เบงเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบžเบทเปˆเบญเป€เบ›เบตเบ” Rust เบเบฑเบšเบ—เบธเบเบ„เบปเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบšเบดเปˆเบ‡เบญเบฐเบ™เบฒเบ„เบปเบ”เบ‚เบญเบ‡เบžเบฒเบชเบฒเบ”เป‰เบงเบเปเบ‡เปˆเบ”เบต, เบซเบงเบฑเบ‡เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

Skillbox เปเบ™เบฐเบ™เปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™