반응형 전체 글100 [Rust] 쉐도잉(shadowing) Rust 쉐도잉(Shadowing)에 대해서 알아보도록 하겠습니다. 쉐도잉(Shadowing)이란? 쉐도잉(Shadowing)은 동일한 이름의 변수를 새로운 값을 가진 새로운 변수로 다시 정의하는 것을 의미합니다. 새로운 변수가 이전 변수를 가리게 되어서 쉐도잉(Shadowing)이라고 합니다. 코드를 통해서 좀 더 알아볼까요? 쉐도잉(Shadowing) 예시 아래 코드를 보시면, let을 통해서 x를 선언하게 됩니다. x는 bool 타입으로 선언이 되었고, 이를 출력하면 x: true가 출력되게 됩니다. 그리고 다시 let을 통해서 x를 &str 타입으로 선언해 줍니다. 그러면 x: monkey가 출력되게 됩니다. 좀 더 설명을 해보자면, true 값을 가진 x는 monkey 값을 가진 x가 선언이 되.. 2024. 4. 9. [Rust] 포인터 타입 => 레퍼런스/박스/원시 포인터 Rust에서 포인터 타입은 크게 3가지로 나뉩니다. Rust에서 포인터 타입은 C/C++에서처럼 포인터가 null이 되거나 중복 해제 등과 같은 일이 발생하지 않습니다. 그렇기 때문에 사람이기 때문에 하는 실수를 사전에 방지할 수 있습니다. 단, unsafe 블록을 사용하는 순간 안전성은 개발자에게 넘어오게 됩니다. 물론 보통의 경우에는 unsafe를 사용하지 않겠지만 말입니다. 레퍼런스(&) 레퍼런스는 C/C++에서의 포인터와 유사합니다. 그렇기 때문에 &var를 쓰고 *var를 함으로써 var이 가지고 있는 값을 접근할 수 있습니다. 이러한 레퍼런스는 2가지로 나뉩니다. 불변 참조(&T)와 가변 참조(&mut T)입니다. 불변 참조는 데이터를 읽을 수는 있지만 수정할 수 없고, 가변 참조는 데이터를 .. 2023. 10. 9. [Rust] 슬라이스 vs 슬라이스 레퍼런스 슬라이스는 벡터(Vector), 문자열(String), 배열(Array) 등과 같은 시퀀스 데이터를 다루는 도구로써, 데이터의 일부분을 안전하게 조작하고 공유할 수 있게 해 줍니다. 슬라이스는 무엇인지 알아보도록 합시다. 추가로 슬라이스 레퍼런스에 대해서도 알아보도록 합시다. 슬라이스 슬라이스는 데이터의 일부분에 대한 참조로써, 데이터의 복사본을 생성하지 않고 해당 데이터를 조작할 수 있게 합니다. 슬라이스는 시작 인덱스와 끝 인덱스를 사용하여 데이터의 일부분을 지정하며, 다음과 같은 형식으로 선언됩니다. [T] 슬라이스 생성과 사용 슬라이스 생성과 사용 방법은 아래 코드를 참고하시길 바랍니다. 보시다시피 벡터, 문자열, 배열 등을 선언한 뒤, 시작 인덱스와 끝 인덱스를 지정해서 슬라이스를 만듭니다. 그.. 2023. 10. 8. [Rust] 벡터(Vector) Rust 배열에 대해서 배웠었는데, 기억하시나요? 혹시 기억이 안 나신다면 아래 링크에서 보고 오시는 것을 추천드립니다. [Rust] 배열(array) Rust에서 배열은 C/C++에서 보았던 배열과 비슷합니다. 하지만 매번 그랬듯이 다른 점도 있기 때문에 잘 비교하면서 알아보도록 합시다. 배열(array) Rust에서 배열은 고정된 크기의 요소를 저장하는 77monkey.tistory.com 배열에 이어서 벡터에 대해서도 알아보도록 합시다. 벡터(Vector) Rust에서 벡터는 std::vec::Vec 모듈을 통해서 사용할 수 있는 동적 배열입니다. 그렇기 때문에 메모리를 할당하고 해제할 수 있으며 요소를 추가하거나 제거할 수 있습니다. 이를 통해서 크기를 동적으로 조절할 수 있습니다. 배열과는 다르.. 2023. 10. 5. [Rust] 배열(array) Rust에서 배열은 C/C++에서 보았던 배열과 비슷합니다. 하지만 매번 그랬듯이 다른 점도 있기 때문에 잘 비교하면서 알아보도록 합시다. 배열(array) Rust에서 배열은 고정된 크기의 요소를 저장하는 데이터 구조입니다. 배열은 한 번 생성되면 크기를 변경할 수 없으며, 요소의 데이터 타입은 동일해야 합니다. 요소의 데이터 타입을 다르게 하고 싶다면 [Rust] 튜플(tuple)을 사용하시면 됩니다. Rust의 배열은 C/C++과 동일하게 스택에 저장되며 고정된 크기로 선언됩니다. 고정된 크기가 아니라면 벡터를 사용하셔야 합니다. 벡터는 추후에 포스팅하도록 하겠습니다. 배열 선언 배열을 선언할 때에는 항상 초기화를 해줘야 합니다. Rust에서는 초기화되지 않은 배열을 사용할 수 없기 때문입니다. 코.. 2023. 10. 2. [Rust] 튜플(tuple) C/C++만 하신 분들에게는 튜플이 생소할 수 있을 것 같습니다. 배열과 같다고 생각하실 수도 있는데, 엄밀히 말하면 튜플은 배열과는 다릅니다. 튜플에 대해서 좀 더 알아보도록 합시다. 튜플(tuple) 튜플(tuple)은 다양한 타입을 담습니다. 추후에 포스팅을 하겠지만 배열은 한 가지 타입을 담을 수 있습니다. 이런 점에서 차이가 발생합니다. 그렇다면 튜플에는 같은 타입을 담을 수 없는지 궁금할 수 있는데, 같은 타입을 담을 수 있습니다. 튜플 선언 튜플은 () 사이에 데이터 타입을 넣어주고 쉼표(,)를 통해서 구별하여 선언합니다. 또한 튜플 변수 이름 뒤에 온점(.)을 쓰고 숫자를 씀으로써 튜플의 요소를 접근할 수 있습니다. 이때 접근 상수는 0부터 시작된다는 점 잊지 마시길 바랍니다. fn mai.. 2023. 9. 28. 이전 1 ··· 3 4 5 6 7 8 9 ··· 17 다음 반응형