Rust (프로그래밍 언어)/문법: 두 판 사이의 차이
| 14번째 줄: | 14번째 줄: | ||
=== rs 파일의 기본 구조 === | === rs 파일의 기본 구조 === | ||
<syntaxhighlight lang="rust" line> | |||
use std::time::{Duration, SystemTime}; | |||
use std::thread::sleep; | |||
fn main() { | |||
let now = SystemTime::now(); | |||
// we sleep for 2 seconds | |||
sleep(Duration::new(2, 0)); | |||
match now.elapsed() { | |||
Ok(elapsed) => { | |||
// it prints '2' | |||
println!("{}", elapsed.as_secs()); | |||
} | |||
Err(e) => { | |||
// an error occurred! | |||
println!("Error: {e:?}"); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
위 코드는 [https://doc.rust-lang.org/std/time/struct.SystemTime.html Rust의 SystemTime Trait 예제]에서 가져왔다. main 함수를 정의하면 거기가 프로그램의 진입점이 되고, use로 C++언어의 <code>#include</code> 전처리기와 네임스페이스 처리와 같은 기능을 동시에 수행한다. | |||
== 변수와 상수, 기본 연산 == | == 변수와 상수, 기본 연산 == | ||
2023년 7월 13일 (목) 21:29 판
이 문서에서는 Rust 프로그래밍 언어로 프로그램을 개발하기 위한 프로세스와 언어 문법을 다룬다.
일단 Rust는 객체지향 프로그래밍(Object Oriented Programming)을 목적으로 만든 언어가 아니다. 따라서 C언어의 class 관련 기능은 물론이고, 캡슐화/다형성/상속에 직접 대응하는 기능이 언어 차원에서는 없다. Rust의 대표 특징 중 하나인 Trait 개념은 오히려 Javascript의 Prototype에 가까운 형태이나, Rust의 등호 기호(=)의 동작이 복사가 아닌 단방향 데이터 이동임을 생각하면 Trait는 Prototype과는 또 다르다.
Cargo 기반 개발 환경 세팅 및 프로그램 기본 구조
물론 rustc로 직접 rs 파일을 컴파일할 수 있지만, 보통은 Rust의 공식 패키지 매니저인 cargo로 프로젝트를 생성한다.
cargo 사용법과 toml 파일
먼저 cargo new (프로젝트 명칭)으로 프로젝트를 생성한다.
프로젝트를 테스트할 때에는 cargo run으로 컴파일 및 실행을 동시에 하며, 배포할 때는 cargo build를 사용한다.
외부 라이브러리를 가져올 때는 cargo add (패키지 명칭)로 (프로젝트 명칭).toml 파일에 라이브러리 의존성을 추가한다.
rs 파일의 기본 구조
use std::time::{Duration, SystemTime};
use std::thread::sleep;
fn main() {
let now = SystemTime::now();
// we sleep for 2 seconds
sleep(Duration::new(2, 0));
match now.elapsed() {
Ok(elapsed) => {
// it prints '2'
println!("{}", elapsed.as_secs());
}
Err(e) => {
// an error occurred!
println!("Error: {e:?}");
}
}
}위 코드는 Rust의 SystemTime Trait 예제에서 가져왔다. main 함수를 정의하면 거기가 프로그램의 진입점이 되고, use로 C++언어의 #include 전처리기와 네임스페이스 처리와 같은 기능을 동시에 수행한다.