Rust의 컬렉션은 데이터를 저장하고 조작하는 데 사용되는 데이터 구조입니다. Rust 표준 라이브러리는 여러 가지 컬렉션 타입을 제공합니다. 가장 일반적인 컬렉션은 Vec, String, HashMap입니다.
벡터는 가변 길이의 순차적인 데이터 구조입니다. 벡터는 Vec<T> 타입으로 정의되며, T는 벡터에 저장될 요소의 타입입니다.
fn main() {
// 빈 벡터 생성
let mut v: Vec<i32> = Vec::new();
// 초기값을 가진 벡터 생성
let v2 = vec![1, 2, 3, 4, 5];
// 벡터에 값 추가
v.push(10);
v.push(20);
// 벡터 값 접근
let third = &v2[2];
println!("The third element is {}", third);
// 벡터 값 반복
for i in &v2 {
println!("{}", i);
}
// 벡터 값 변경
for i in &mut v {
*i += 50;
}
for i in &v {
println!("{}", i);
}
}
Rust의 문자열은 UTF-8 인코딩된 가변 길이의 텍스트 데이터입니다. 문자열은 String 타입으로 정의됩니다.
fn main() {
// 빈 문자열 생성
let mut s = String::new();
// 초기값을 가진 문자열 생성
let s2 = String::from("Hello, world!");
// 문자열에 값 추가
s.push_str("Hello");
s.push(' ');
// 문자열 연결
let s3 = s + &s2;
println!("{}", s3);
// 문자열 반복
for c in s2.chars() {
println!("{}", c);
}
// 문자열 길이
println!("Length of s2: {}", s2.len());
}
해시맵은 키-값 쌍을 저장하는 데이터 구조입니다. 해시맵은 HashMap<K, V> 타입으로 정의되며, K는 키의 타입, V는 값의 타입입니다.
use std::collections::HashMap;
fn main() {
// 빈 해시맵 생성
let mut scores = HashMap::new();
// 해시맵에 값 추가
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// 해시맵 값 접근
let team_name = String::from("Blue");
let score = scores.get(&team_name);
match score {
Some(&score) => println!("Score of {}: {}", team_name, score),
None => println!("No score found for {}", team_name),
}
// 해시맵 값 반복
for (key, value) in &scores {
println!("{}: {}", key, value);
}
// 해시맵 값 변경
scores.insert(String::from("Blue"), 25);
println!("{:?}", scores);
}
Rust의 컬렉션을 사용하면 데이터를 효율적으로 저장하고 조작할 수 있습니다. 각 컬렉션 타입은 특정한 용도에 맞게 설계되어 있으며, 다양한 상황에서 유용하게 사용할 수 있습니다.
let mut numbers = Vec::new();numbers.push(5);let first = &numbers[0];for number in &numbers { println!("{}", number); }let mut greeting = String::from("안녕하세요");greeting.push_str(", 반갑습니다!");let first_char = &greeting[0..3];let mut scores = HashMap::new();scores.insert("팀 A", 10);let score = scores.get("팀 A").unwrap();let team = String::from("팀 B"); scores.insert(team, 20); // team은 이제 해시맵에 소유권을 넘김