🦀 Rust 치트시트
메모리 안전성과 성능을 동시에 제공하는 언어
기본 문법
변수 선언
let name = "Rust";
let mut age = 25;
let is_active: bool = true;
const MAX_SIZE: u32 = 1000;
조건문
if condition {
statement;
} else if other_condition {
other_statement;
} else {
default_statement;
}
반복문
for i in 0..10 {
println!("{}", i);
}
for item in items.iter() {
println!("{}", item);
}
함수 정의
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn greet(name: &str) {
println!("Hello, {}!", name);
}
소유권과 빌림
소유권
let s1 = String::from("hello");
let s2 = s1; // s1은 더 이상 유효하지 않음
// println!("{}", s1); // 컴파일 에러!
빌림
let s1 = String::from("hello");
let len = calculate_length(&s1);
println!("The length of '{}' is {}.", s1, len);
fn calculate_length(s: &String) -> usize {
s.len()
}
가변 빌림
let mut s = String::from("hello");
change(&mut s);
fn change(some_string: &mut String) {
some_string.push_str(", world");
}
라이프타임
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
구조체와 열거형
구조체
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
let user1 = User {
email: String::from("someone@example.com"),
username: String::from("someusername123"),
active: true,
sign_in_count: 1,
};
구조체 메서드
impl User {
fn new(username: String, email: String) -> User {
User {
username,
email,
sign_in_count: 1,
active: true,
}
}
fn greet(&self) -> String {
format!("Hello, {}!", self.username)
}
}
열거형
enum IpAddrKind {
V4,
V6,
}
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
Option과 Result
let some_number = Some(5);
let some_string = Some("a string");
let absent_number: Option<i32> = None;
let result: Result<i32, &str> = Ok(42);
let error: Result<i32, &str> = Err("Something went wrong");