본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

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 전처리기와 네임스페이스 처리와 같은 기능을 동시에 수행한다.

변수와 상수, 기본 연산

데이터 자료형

Expression, Statement의 차이

조건문 및 반복문

Rust의 함수 구조와 메모리 관련 기능

match로 람다 함수 구현하기

enum

match와의 결합으로 모나드 구현

예외 처리

Generic

Trait와 오버로딩

모듈을 사용한 코드 분할

패키지에서 Crate 가져오기, 네임스페이스