더 깊이 Rust에 대해 알고 싶은 분들을 위한 보다 심층적인 실습 강의입니다.
다양한 프로젝트 시나리오 실습으로 초보 개발자의 경력을 한 단계 업그레이드 할 수 있습니다.
본 강의를 통해 Rust 시스템 프로그래밍 언어에 관련된 모든 지식을 습득하시길 바랍니다.
[본 강의를 수강해야 하는 이유]
#1. 본 강의는 빠른 진행과 재미, 흥미로운 정보, 보다 심층적인 실습으로 가득한 Rust 프로그래밍 언어 학습 강의입니다.
#2. 이 강의는 실습 강의입니다. 다뤄진 각 주제에 대한 목표 예제가 있을 뿐만 아니라 학습 내용을 활용하여 macOS, Linux, Windows에서 작동하는 플레이 가능한 게임 프로토타입을 결합하는 일련의 프로젝트 시나리오도 있습니다.
#3. 해당 프로젝트에서는 이 강의를 위해 특별히 개발된 게임 엔진인 Rusty Engine을 활용합니다. Rusty Engine은 게임 엔진 개념을 최소한으로 유지하여 이 강의에서 배운 내용을 정확히 사용하는 데 집중할 수 있게 합니다.
[Rust를 배워야하는 이유]
더 깊이 Rust에 대해 알고 싶은 분들을 위한 보다 심층적인 실습 강의입니다.
다양한 프로젝트 시나리오 실습으로 초보 개발자의 경력을 한 단계 업그레이드 할 수 있습니다.
본 강의를 통해 Rust 시스템 프로그래밍 언어에 관련된 모든 지식을 습득하시길 바랍니다.
[본 강의를 수강해야 하는 이유]
#1. 본 강의는 빠른 진행과 재미, 흥미로운 정보, 보다 심층적인 실습으로 가득한 Rust 프로그래밍 언어 학습 강의입니다.
#2. 이 강의는 실습 강의입니다. 다뤄진 각 주제에 대한 목표 예제가 있을 뿐만 아니라 학습 내용을 활용하여 macOS, Linux, Windows에서 작동하는 플레이 가능한 게임 프로토타입을 결합하는 일련의 프로젝트 시나리오도 있습니다.
#3. 해당 프로젝트에서는 이 강의를 위해 특별히 개발된 게임 엔진인 Rusty Engine을 활용합니다. Rusty Engine은 게임 엔진 개념을 최소한으로 유지하여 이 강의에서 배운 내용을 정확히 사용하는 데 집중할 수 있게 합니다.
[Rust를 배워야하는 이유]
Rust는 모든 종류의 버그와 보안 취약점을 제거하고, C와 C++와 같이 무비용 추상화를 가지고 있으며, 재미있게 프로그래밍할 수 있고, 시스템 프로그래머가 멋진 작업을 수행할 수 있게 해주는 시스템 프로그래밍 언어입니다. Rust가 게임 엔진, 고성능 컴퓨팅, 내장형 장치, 웹 프로그래밍과 같은 다양한 분야에서 주목을 받고 있는 것은 당연합니다.
[본 강의에서 다룰 내용]
관용적이고 테스트하기 좋은, 문서화 된 Rust 코드를 작성하는 법
스레드, 채널, 클로저, 반복자, 코드 문서, 표준 라이브러리 특성 정보, 오류 처리, 테스트, 벤치마크, 로깅, 속성, 터보피시 등
기초 내용을 뛰어넘는 Rust 중급 개념
Rust를 사용하여 비디오 게임 프로토타입을 만드는 법
[본 강의의 대상]
Rust의 기본 지식이 있고 실전 활용에 관심 있는 프로그래머, 엔지니어
코드를 효율적이고, 최소한의 버그로 안전하게 실행해야 하는 모든 개발자
Rust에 관심있는 초보 개발자 및 취업준비생
충돌이나 보안 취약점에 대한 걱정 없이 고성능 코드를 작성하는 방법에 대해 학습해 보세요. 다양성, 포용성, 그리고 그저 친절함이 모두 최고 목표인 활기찬 개발자 커뮤니티에 참여하세요.
1강에서 뵙겠습니다.
- Nathan
Introduce myself and what this course is all about!
In this video:
What this course is all about
Why it's so fun
Game prototype teaser (using Rusty Engine!)
Show how to find the repository containing the exercises.
How to write idiomatic code (write code like a professional).
In this video:
rustfmt
clippy
attributes
This exercise gives you an opportunity to use rustfmt and clippy to take a terrible mess of code and make it look snazzy.
How to document your code and generate a documentation web site using inline comments in your code and "cargo doc".
In this video:
Helpful options you should use
Inner & Outer documentation comments
Rust-flavored markdown syntax
How to publish a crate on crates.io.
In this video:
How to set up your account with crates.io
Cargo.toml configuration
cargo publish
This exercise walks you through documenting an undocumented library, and generating a web site with images and intra-doc links!
A placeholder for a future crate publishing exercise, if they introduced namespaces for publishing crates.
How to use closures.
In this video:
What a closure is
Syntax
Gotchas
How to use those closures we just talked about in iterators. A bit of functional programming.
In this video:
Iterators
Iterator adapters
Iterator consumers
An exercise to use a bunch of closures in a bunch of iterators.
A tour of some of the most common traits from the standard library.
In this video:
How to derive a trait
How to manually implement a trait
Examples of deriving or implementing some of the most common traits from std
This exercise walks you through defining a trait and then using it.
How to create error types for your library in 5 (and a half) steps.
In this video:
How to group errors
Error trait
thiserror crate
How to handle errors that you receive.
In this video:
panic
"?" try operator
anyhow crate
Define an error type. Create the error. Handle the error!
How to write and run unit tests for your code.
In this video:
#[cfg(test)]
#[test] functions
cargo test
How to write and run integration tests for your code.
In this video:
The "tests/" directory
Running your integration tests
Finding your test output
How to write and run benchmark tests for your code.
In this video:
Criterion
How to get started writing benchmarks
Why benchmarks are so cool (HTML reports)
Write some unit tests and integration tests!
How simple logging works in Rust.
In this video:
log crate
log macros
env_logger
Use logging macros in a library, configure a binary to output the log info to stderr, see the difference in output at different log levels.
How to spawn, manage, and join threads.
In this video:
Why use threads
thread spawning
passing data to / from a thread at creation / joining
How Crossbeam channels can be used to communicate between threads.
In this video:
crossbeam crate
bounded vs unbounded channels
the Send trait
Overview of the project section.
How to set up and configure a project to use Rusty Engine.
How to initialize Rusty Engine within your project.
How to define a custom struct to store your game state.
How to define a game logic function and add it to your game.
How to create and manipulate sprites in your game project.
How to deal with colliders and collisions in your game project.
How to handle keyboard input in your game project.
How to handle mouse input in your game project.
How to create and manage text in your game project.
How to handle music and sound effects in your game project.
How to use timers in your game project.
A bit more about the Engine struct and the Game struct that weren't covered elsewhere.
The common setup that needs to be done before starting any Game Scenario project:
Add Rusty Engine as a dependency to Cargo.toml
Download the asset pack
Set up main.rs
Compile and run the project
This is a full walkthrough the Road Race game scenario from Rusty Engine's list of scenarios. This assumes that you've done the "common setup" from the video of the same name.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.