Programming Language/Rust(19)
-
[Rust/러스트] 소유권(Owner)
■ 소유권 소유권은 러스트의 핵심 기능으로써, 모든 프로그램은 실행하는 동안 컴퓨터의 메모리를 사용하는 방법을 관리해야 합니다. 러스트가 아닌 다른 몇몇 언어들은 프로그램이 실행될 때 더 이상 사용하지 않는 메모리를 끊임없이 찾는 가비지 콜렉션을 갖고 있으며, 이는 프로그래머가 직접 명시적으로 메모리를 할당하고 해제해야 합니다. 이와 달리 러스트의 메모리는 컴파일 타임에 컴파일러가 체크할 규칙들로 구성된 소유권 시스템을 통해 관리됩니다. 따라서 소유권 기능들은 런타임 비용이 발생하지 않습니다. 소유권을 잘 이해하기 위해 소유권의 규칙과 스택(Stack), 힙(Heap) 메모리에 역할과 기능에 대해 알아둘 필요가 있으며, 아래에서 간단히 확인해 보겠습니다. ◆ 소유권 규칙 러스트의 각각의 값은 해당값의 오..
2022.02.17 -
[Rust/러스트] 반복문 정리
■ 반복문 반복문은 반복적으로 일련의 작업을 수행해야할 때 사용합니다. Rust에서 제공하는 반복문은 loop, while, for 이며, 사용자의 기호에 맞게 보다 효율적인 작업이 가능하다고 판단되는 반복문을 사용하면 됩니다. ◆ loop loop는 while, for문 과는 달리 조건 처리가 없기 때문에 break와 같이 로직을 벗어날 수 있는 처리를 하지않으면 무한 루프에 빠지게 됩니다. 따라서 loop는 로직안에서 조건문과 break 를 이용하여 조건 처리가 필요합니다. 예시) count에 1씩 더하는 작업을 반복적으로 진행하다가 count가 5가 되었을 때 loop 를 벗어나는 로직을 통해 loop에 대해 이해할 수 있습니다. fn main() { let mut count = 0; loop{ p..
2022.02.16 -
[Rust/러스트] 조건문 정리
■ 조건문 조건의 상태가 참인지 거짓인지에 따라 분기에 실행 흐름을 제어할 수 있는 작성 방식입니다. ◆ IF 표현식 if 표현식은 제어하고자 하는 조건의 수에 따라 단일 if문, if~else문, if~else if~ else문으로 작성 할 수 있습니다. 1. 단일 if 문 number 변수는 10을 갖고, if 조건은 number가 10과 같은지를 확인합니다. 참(true)일 경우 if 분기를 처리하며, "Number 는 10 이다." 출력문이 호출됩니다. 거짓(false)일 경우 if 분기를 처리하지 않고 "조건문 테스트 종료." 출력문이 호출됨과 동시에 종료됩니다. fn main() { let number = 10; if number == 10{ println!("Number 는 10 이다.");..
2022.02.16 -
[Rust/러스트] 함수 정리
■ 함수 Rust에서의 함수는 표현부에 작성되어 있는 작업이 모두 수행되고 종료됩니다. 명명규칙은 스네이크 표기법을 따르며, 소문자와 언더바(_)를 사용하여 함수명을 표기합니다. 또한 함수는 매개변수와 반환값의 유무에 따라 각각 다른 기능으로 활용될 수 있습니다. ◆ 매개변수와 반환값이 없는 함수 fn basic_function(){ println!("매개변수와 리턴값이 없는 함수"); } fn main() { basic_function(); } ▶ 출력 결과 매개변수와 리턴값이 없는 함수 ◆ 매개변수는 있고 반환값이 없는 함수 fn basic_function(x : i32, y :i32){ println!("x : {}",x); println!("y : {}",y); } fn main() { basic..
2022.02.15 -
[Rust/러스트] 배열 다루기
■ 배열 배열은 순차적으로 동일한 타입의 값으로만 묶을 수 있으며, 색인(인덱스)을 통해 각 요소에 접근할 수 있습니다. 배열의 색인 범위를 벗어나는 인덱스로 요소를 접근하면 Rust가 오류와 함께 패닉됩니다. ◆ 배열의 색인을 통한 각 요소 접근 10, 50, 100 을 요소로 갖는 배열에 색인을 통해 각각의 요소에 접근할 수 있는지 확인합니다. fn main() { let arr = [10, 50, 100]; println!("첫번째 요소 : {}", arr[0]); println!("두번째 요소 : {}", arr[1]); println!("세번째 요소 : {}", arr[2]); } ▶ 출력 결과 첫번째 요소 : 10 두번째 요소 : 50 세번째 요소 : 100 ◆ 배열의 색인 범위를 벗어나는 인..
2022.02.11 -
[Rust/러스트] 튜플 다루기
■ 튜플 튜플은 순차적으로 다양한 타입의 값을 묶을 수 있다. 또한 변수 선언시 다중 바인딩이 가능하며, 색인을 통해 각 요소에 접근할 수 있다. ◆ 튜플의 다중 변수 바인딩 10, 50.2, 100 의 값으로 묶여 있는 튜플을 x, y, z 변수에 바인딩 하여 각각의 변수에 값이 순차적으로 x=10, y=50.2, z=100을 갖고 있는지 확인한다. fn main() { let tup = (10, 50.2, 100); let (x, y, z) = tup; println!("x : {}", x); println!("y : {}", y); println!("z : {}", z); } ▶ 출력 결과 ◆ 튜플의 색인을 통한 각 요소 접근 10, 50.2, 100 의 값으로 묶여 있는 튜플에 색인을 통해 각각의..
2022.02.11