반응형
1. 함수 인자로 전달하기고차 함수는 다른 함수를 인자로 받을 수 있습니다. 예를 들어 Fn-trait을 사용해 함수를 인자로 받는 함수를 정의합니다.fn apply(f: F, x: i32) -> i32where F: Fn(i32) -> i32, { f(x) }fn main() { let square = |x| x * x; let result = apply(square, 5); println!("The square of 5 is: {}", result); // Output: The square of 5 is: 25}2. 함수 반환하기고차 함수는 다른 함수를 반환할 수 있습니다. 이 경우, 반환 타입을 명시해야 합니다.fn make_multiplier(fac..
1. 트레이트 정의하기 트레이트는 특정 행동을 정의하고, 이를 구현하는 타입에 적용하는 방식으로, 트레이트를 정의하기 위해 trait 키워드를 사용합니다. 예를 들어 Speak라는 트레이트를 정의할 수 있습니다.trait Speak { fn speak(&self);}2. 트레이트 구현하기구현하고자 하는 타입에 대해 트레이트를 구현합니다. trait Speak { fn speak(&self);}struct Running;impl Speak for Running { fn speak(&self) { println!("Run!"); } }3. 트레이트 객체 사용하기 트레이트 객체를 사용하면 다형성을 구현할 수 있습니다. let_speak 함수가 Speak 트레이트를 구현하는..
1. 스레드 (Threads)Rust에서 동시성을 처리하는 방법으로는 여러가지 방법이 있습니다. Rust의 동시성 모델은 안전성과 성능을 강조해, 주로 스레드와 비동기 프로그래밍을 통해 구현됩니다. 먼저 스레드는 표준 라이브러리에서 쉽게 생성할 수 있습니다. std:thread 모듈을 사용하여 스레드를 생성하고 관리합니다.use std::thread;fn main() { let handle = thread::spawn(|| { for i in 1..5 { println!("Threads: {}", i); } }); for i in 1..3 { println!("Main Threads: {}", i); } handle.jo..
1. 제네릭 (Generics)Rust에서 Generics(제네릭)은 데이터 타입에 대한 추상화를 제공해 코드의 재사용성을 높이고, 타입 안정성을 유지하는 데 도움을 주며, 제네릭을 사용해 특정 타입에 의존하지 않고 함수, 구조체, 열거형 등을 정의할 수 있습니다.2. 기본 문법제네릭은 와 같은 형식으로 사용합니다. T 부분에는 타입 매개변수를 나타냅니다.함수에서 제네릭fn print_value(value: T) { println!("{:?}", value);}fn main() { print_value(10); // 정수 print_value(10.0); // 실수 print_value("Hello, World!"); // 문자열 print_value(true); // 불리언}..
1. 모듈 Rust의 모듈은 코드의 구조화와 재사용성을 높이는 데 중요한 역할을 하며, 모듈은 관련된 기능을 그룹화하여 코드의 가독성과 유지보수성을 향상시킵니다. Rust 모듈 시스템의 주요 개념은 다음과 같습니다.pub fn my_function() { println!("Hello from my_module");} Rust의 모듈은 mod 키워드를 사용하여 정의하고, 모듈은 파일 내에서 정의할 수 있고, 별도의 파일로 분리할 수 있습니다. 기본적으로 모듈의 항목은 비공개며, pub 키워드를 사용해 공개할 수 있습니다. 공개된 항목은 모듈 외부에서 접근할 수 있습니다. 2. 모듈 불러오기모듈에 접근할 때는 경로를 사용합니다. 예를 들어, 위 예제에서 my_function을 호출하려면 다음과 같이 입..
1. Result 타입Result 타입은 성공과 실패를 표현하는 열거형(Enum)으로, 두 가지 변형이 있습니다.Ok(T): 성공적인 결과를 포함Err(E): 에러를 포함fn divide(a: f64, b: f64) -> Result { if b == 0.0 { Err(String::from("0으로 나눌 수 없음")) } else { Ok(a/b) }}fn main () { match divide(10.0, 2.0) { Ok(result) => println!("Result: {}", result), Err(e) => println!("Error: {}", e) } match divide(10.0, 0.0) { Ok(result) =>..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.