Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency. Rust is syntactically similar to C++, but is designed to provide better memory safety while maintaining high performance(wikipedia, 2019). Rust 컴파일러는 Rust로 작성한다.
러스트는 인터넷에서 실행되는 서버 및 클라이언트 프로그램을 개발하는데 적합한 언어를 목표로 설계되었다. 이 목표에 따라 러스트는 안전성과 병행 프로그래밍, 그리고 메모리 관리의 직접 제어에 초점을 맞추고 있다. 또한 성능 면에서는 C++와 비슷한 수준을 목표로 하고 있다(ibid). 모질라 재단에서 개발하고 있으며, 차기 웹 브라우저 엔진 프로젝트인 서버(Servo)를 개발하는 데에 쓰인다.
설치 및 튜토리얼
윈도우 사용자는 프로그램을 다운로드하여 설치하고, MacOS, Linux에서는 아래의 스크립트로 설치한다. 설치 후에는 rustup(rust관리), cargo(프로젝트관리), rustc(컴파일러)를 사용한다. 소스 확장자는 .rs 이며 Rust 언어 튜토리얼은 여기를 참고한다.
curl https://sh.rustup.rs -sSf | sh
Visual Studio Code 설정
대표적인 아래 두 개의 확장을 설치한다.
- 언어지원 : Rust (rls)
- 디버그 지원 : CodeLLDB
- 추가 확장 : Better TOML, crates
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}",
"args": [],
"cwd": "${workspaceRoot}/target/debug/",
"sourceLanguages": ["rust"]
}
]
}
// Rust Hello World
extern crate num_bigint;
use num_bigint::BigUint;
fn main() {
println!("Hello, world!");
let number = 1000u32.into();
println!("{}", factorial(number));
}
fn factorial(number: BigUint) -> BigUint {
let big_1 = 1u32.into();
let big_2 = 2u32.into();
if number < big_2 {
big_1
} else {
let prev_factorial = factorial(number.clone() - big_1);
number * prev_factorial
}
}
// C#과 비교
using System;
using System.Numerics;
namespace Hello {
class Program {
public static BigInteger fact (Int32 n) {
BigInteger f = new BigInteger (n);
while (--n > 1) {
f *= n;
}
return f;
}
static void Main (string[] args) {
Console.WriteLine ("헬로우월드");
BigInteger f = fact (10000);
Console.WriteLine (f.ToString ());
}
}
}