일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 체리새우
- MSSQL
- 가재
- 애플 달팽이
- MSA
- for
- PKI
- 쌈채소
- Python 강좌
- 무화과
- 조건문
- Config server
- 기본문법
- 치비
- rust
- 주말농장
- 구피
- 분산 신원
- rust 소개
- 텐더민트
- golang 강좌
- 카디날
- Tendermint
- 반복문
- RSA
- 분산 식별자
- Feign
- did
- rust 강좌
- 물생활
- Today
- Total
목록rust 강좌 (15)
comnic's Dev&Life

14. 비동기 프로그래밍과 async/await Rust는 비동기 프로그래밍을 지원하기 위해 async/await 문법을 도입했습니다. 비동기 프로그래밍은 I/O 작업이나 이벤트 처리와 같은 작업에서 유용하며, 애플리케이션의 성능과 응답성을 향상시키는 데에 활용됩니다. 14. 1 async/await 문법 async / await는 아래 예제와 같이 사용할 수 있습니다. // async 함수 정의 async fn fetch_data() -> String { // 가상의 비동기 작업을 수행 tokio::time::sleep(tokio::time::Duration::from_secs(2)).await; "Data Fetched!".to_string() } // async 함수 호출 async fn main(..

13. 안전한 코드와 unsafe 키워드 13. 1 unsafe 키워드 Rust는 안전성을 강조하는 언어로써, 대부분의 코드는 안전한 규칙을 따르도록 설계되어 있습니다. 그러나 특정한 경우에는 안전성 규칙을 우회하고자 할 때 unsafe 키워드를 사용할 수 있습니다. unsafe 블록 내에서는 일반적인 Rust 안전성 규칙을 무시할 수 있습니다. fn main() { let mut data = 42; unsafe { // unsafe 블록 내에서 안전성 규칙을 우회 data = data + 1; println!("Unsafe result: {}", data); } // 여기서부터는 다시 안전한 코드 data = data * 2; println!("Safe result: {}", data); } unsaf..

12. 테스트와 에러 핸들링 Rust는 테스트 주도 개발(Test-Driven Development, TDD)을 지원하며, 코드의 안정성과 신뢰성을 확인하는 데에 사용됩니다. 12.1 테스트 작성과 실행 테스트는 #[test] 어트리뷰트를 사용하여 작성되며, cargo test 명령어를 통해 실행됩니다. // 소스 코드 fn add(a: i32, b: i32) -> i32 { a + b } // 테스트 코드 #[cfg(test)] mod tests { use super::*; #[test] fn test_add() { assert_eq!(add(2, 3), 5); assert_eq!(add(-1, 1), 0); assert_eq!(add(0, 0), 0); } } add 함수는 간단한 덧셈을 수행하는 함..

11. 병행성(Concurrency)과 동시성(Parallelism) 병행성은 여러 작업이 동시에 실행되는 것처럼 보이도록 하는 컴퓨터 과학의 개념입니다. Rust에서는 스레드를 통한 병행성을 지원합니다. 각 스레드는 독립적으로 실행되며, 여러 스레드가 동시에 진행되는 것처럼 보입니다. 동시성은 물리적인 멀티코어 CPU에서 여러 작업이 실제로 동시에 실행되는 것을 의미합니다. Rust는 동시성을 지원하기 위해 여러 접근 방식을 제공합니다. 주로 벡터화, 병렬 컬렉션, 및 Rayon 라이브러리 등을 통해 병렬 처리를 지원합니다. 11. 1 스레드와 안전한 공유 상태 Rust에서는 스레드를 통한 병행성을 지원하고, 안전한 공유 상태를 보장하기 위해 소유권 시스템과 트레이트를 활용합니다. 여러 스레드 간에 데..

10. 제네릭 프로그래밍 제네릭 데이터 타입은 Rust에서 타입의 일반성을 높이기 위해 사용되는 기능으로, 코드를 추상화하고 재사용성을 높이는 데에 기여합니다. 제네릭은 함수나 구조체 등에서 사용할 수 있으며, 특정 타입을 고정하지 않고 여러 다양한 타입에서 동작하도록 설계됩니다. 10.1 제네릭 함수와 구조체: 일반적인 함수와 함수 호출에 대한 예제를 먼저 살펴보겠습니다. fn print_number(value: i32) { println!("Value: {}", value); } fn print_string(value: &str) { println!("Value: {}", value); } fn main() { print_number(42); print_string("Hello"); // print_..

9. 생성자와 소멸자, RAII(Resource Acquisition Is Initialization) 개념 9.1 생성자와 소멸자 메소드 정의 생성자(new 메소드): Rust에서는 impl 블록 내에서 new라는 이름을 가진 함수를 통해 생성자 역할을 수행합니다. 이 함수는 보통 새로운 객체를 생성하고 초기화하는 데 사용됩니다. struct MyResource { data: String, } impl MyResource { fn new(initial_data: &str) -> MyResource { println!("리소스 생성"); MyResource { data: String::from(initial_data), } } } MyResource 구조체에는 data라는 필드가 있습니다. impl 블록..

8. 패턴 매칭(Match)과 매치 구조체(Match Struct) Rust에서 match 키워드를 사용한 패턴 매칭은 다양한 값에 대한 패턴을 정의하고, 해당 패턴에 맞게 코드를 실행할 수 있도록 해줍니다. 매치(match)는 다른 언어의 switch문과 유사하지만 훨씬 강력하며, 다양한 패턴을 사용할 수 있습니다. 8.1 match 키워드를 사용한 패턴 매칭 match 키워드를 사용하여 값을 여러 경우(case)와 비교합니다. 각 경우에 대해 실행될 코드 블록을 정의합니다. 모든 가능한 경우를 다루는 것이 권장되며, 이를 위해 _ (와일드카드)를 사용하여 나머지 경우를 처리할 수 있습니다. 예제: fn main() { let number = 5; match number { 1 => println!("..

7. 소유권과 대여 Rust의 핵심 개념 중 하나는 소유권(Ownership) 시스템입니다. 이는 메모리 안전성과 경합 상태를 방지하는 기술적인 도구로 사용됩니다. 7. 1 소유권 시스템 소개 Rust에서 모든 값은 변수에 소유권(ownership)을 가지고 있습니다. 한 번에 하나의 변수만이 해당 값의 소유권을 갖을 수 있습니다. 소유권은 변수가 스코프 밖으로 벗어날 때 해당 값이 메모리에서 해제되는 것을 의미합니다. 예제: fn main() { let s1 = String::from("Hello"); // s1이 String의 소유권을 가짐 let s2 = s1; // s2가 소유권을 가져감, s1은 더 이상 유효하지 않음 // println!("{}", s1); // 컴파일 에러! s1은 더 이상 ..