DataScience
[Rust] mut 변수
Rust 2024. 2. 15. 15:24

Rust 프로그래밍 언어에서 모든 변수는 "디폴트로" 불변성(Immutability)의 성질을 갖습니다. 불변성(Immutability)이란 변수에 값이 한번 지정된 후에는 그 값을 변경할 수 없는 특성을 말합니다. 반면에 mut는 변수의 값을 변경할 수 있는 변수입니다. 다음은 쓰레드나 프로세스 내부에서 mut변수를 선언하고 값을 변경합니다. let mut a = json!({...}); a.insert(...); ... } 하지만 외부에서 접근하여 해당 변수의 값을 변경하고자 한다면 해당 변수값은 쉽게 바뀝니다. 이는 Rust 스럽지 않은 코드입니다. 이를 해결하기 위해 다음과 같이 immutable 변수로 감싸줍니다 let a = { let mut a = json!({...}); a.insert(...

[RUST] `static
Rust 2023. 8. 13. 14:17

데이터의 라이프타임(lifetime)을 나타내는 특별한 키워드입니다. `'static`은 프로그램 전체 수명 동안 지속되는 정적(static) 데이터를 표현합니다. `'static`은 라이프타임이 가장 긴 수명을 갖는 것으로 간주됩니다. `'static`은 다음과 상황에서 사용될 수 있습니다 1. 리터럴 데이터: 문자열 리터럴과 정수형 리터럴 같은 리터럴 값은 `'static` 라이프타임을 갖습니다. 이는 프로그램 실행 동안 변하지 않고 메모리에 상주하는 데이터입니다. let static_string: &'static str = "Hello, world!"; 2. 정적 변수: `static` 키워드로 선언된 정적 변수는 `'static` 라이프타임을 가집니다. 이러한 변수는 프로그램 전체에서 사용 가능하..

[RUST] & * ` ' ' 다양한 기호
Rust 2023. 8. 12. 14:15

1. `&`: - `&`는 참조(reference) 연산자로 사용됩니다. - 변수 또는 값 앞에 `&`를 붙여 해당 값에 대한 참조를 생성합니다. - 참조는 값에 대한 불변 참조(immutable reference)를 생성하며, 해당 값에 대한 소유권을 이전하지 않고도 값을 참조할 수 있게 합니다. 2. `*`: - `*`은 역참조(dereference) 연산자로 사용됩니다. - 포인터를 역참조하여 해당 메모리 위치에 저장된 값을 얻습니다. - `*`는 포인터가 가리키는 값을 읽거나 수정할 때 사용됩니다. 3. `backtick`(`) 또는 `백틱`: - `backtick`은 Rust에서 일반적으로 사용되지 않는 문자입니다. 대신, 문자열 리터럴에는 역따옴표(`)가 사용됩니다. 4. `'` (작은 따옴표..

[RUST] match
Rust 2023. 8. 10. 14:10

switch case문과 비슷합니다. match는 패턴 매칭을 사용하여 다양한 경우의 수에 대한 코드 블록을 처리하는 구문입니다. `match`는 값이 여러 가지 가능한 경우에 대해 일치하는 패턴을 찾고 해당하는 코드를 실행합니다. `match` 구문을 사용하는 이유 1. 모든 경우 다루기: `match`는 모든 가능한 경우에 대해 명시적으로 처리할 수 있습니다. `match`를 사용하면 모든 열거형 변형(variant)이나 다양한 패턴에 대해 분기 처리를 작성할 수 있습니다. 이는 프로그램의 완전성을 보장하고 예기치 않은 경우를 방지하는 데 도움을 줍니다. 2. 코드 가독성: `match`는 패턴 매칭을 사용하므로 코드의 의도를 명확하게 표현할 수 있습니다. `match`를 사용하여 코드를 작성하면 어..

[RUST] if let
Rust 2023. 8. 9. 14:09

패턴 매칭을 사용하여 `Option`, `Result`, `enum` 등과 같은 대안적인 값을 다룰 때 편리하게 사용되는 구문입니다. `if let`을 사용하면 해당 값이 특정 패턴과 일치하는지 확인하고, 일치하는 경우에만 해당 블록의 코드를 실행할 수 있습니다. `if let`을 사용하는 이유 1. 대안적인 값 처리: `Option`이나 `Result`와 같은 대안적인 값을 다룰 때, `if let`은 해당 값이 실제로 존재하는지 확인하고 그 값을 사용할 수 있게 해줍니다. 예를 들어, `Option` 값이 `Some`인 경우에만 해당 값을 사용하고, `None`인 경우에는 특정 동작을 수행할 수 있습니다. 2. 코드 가독성: `if let`은 패턴 매칭을 사용하므로 코드의 의도를 더 명확하게 표현할 ..

[RUST] unwrap과 '?'
Rust 2023. 8. 7. 15:07

두 연산자는 에러 처리와 결과 값의 추출을 간편하게 수행하기 위해 사용됩니다. 1. `unwrap`: - `Option` 또는 `Result` 타입에서 값을 안전하게 추출합니다. - `unwrap`은 `Option` 타입에서 `Some` 값을 추출하거나, `Result` 타입에서 `Ok` 값을 추출합니다. - `unwrap`은 값의 존재 여부를 검사하지 않고, 값을 강제로 추출합니다. 따라서, 값이 없는 경우(`None` 또는 `Err`)에는 패닉을 일으킬 수 있습니다. - 주로 디버깅이나 간단한 예제 코드 작성 시 사용되며, 실제 상용 코드에서는 에러 처리를 명시적으로 수행하는 것이 권장됩니다. 2. `?` (Question Mark Operator): - `?` 연산자는 함수나 메서드 내에서 `Res..

[RUST] Some
Rust 2023. 8. 6. 10:06

Some은 `Option` 열거형의 변형 중 하나로, 값이 있는 경우를 나타냅니다. `Option`은 Rust에서 값의 존재 여부를 표현하는 타입이며, `Some`은 그 값이 있는 경우를 나타냅니다. `Some`을 사용하는 이유 1. 값의 존재 여부 표현: `Some`은 값이 존재하는 경우를 명시적으로 표현합니다. Rust에서는 `Option` 타입을 사용하여 값이 있을 수도 있고 없을 수도 있는 경우를 처리할 수 있습니다. `Some`은 값이 있는 경우를 나타내므로, 이를 통해 값을 정확하게 전달하고 처리할 수 있습니다. 2. 타입 안정성: `Option` 타입은 컴파일 시점에서 값의 존재 여부를 확인하여 타입 안정성을 제공합니다. `Option`을 사용하면 값을 명시적으로 `Some`으로 표현하거나 ..