rust
-
[Rust] collection(1)-vectorrust 2023. 2. 6. 18:03
앞서 3장에서 rust의 기본 데이터 타입에 대해서 살펴봤다. 돌아보면 스칼라타입과 컴파운드타입이 있었고 스칼라 타입에는 integer, float, boolean, char 타입이 있었고 컴파운드타입에는 tuple, array 타입이 있었다. 위의 타입들과 컬렉션의 다른점은 프로그램이 런타임중에 늘어나거나 줄어들수 있는 데이터이기 때문에 데이터가 스택이 아닌 힙에 저장이 되게 된다. 컬렉션의 종류로는 vertor, string, hash map 3가지가 있으며 하나씩 정리해보자 Vector array와 유사하게 동일타입의 여러값을 단일 데이터 구조안에 저장하는 타입이다 그러나 벡터는 길이가 런타임중에 변경 될수 있다라는 차이가 있다. 아래예시와 같이 표준라이브러리를 이용해서 생성하는 방법과 러스트의 매..
-
[Rust] 7. 모듈시스템에 대하여rust 2023. 2. 5. 14:28
대부분의 예시는 하나의 모듈과 하나의 파일로 이루어져 있지만 프로젝트가 커질수록 여러개의 모듈과 여러개의 파일로 코드를 작성해야 할것이다. 하나의 패키지는 여러개의 binary crates 혹은 하나의 library crate 를 생성할수 있다. 이러한 rust에서 파일을 관리하는데 필요한 개념들을 공부해보는 목적으로 작성된 글이다. Packages: A Cargo feature that lets you build, test, and share crates Crates: A tree of modules that produces a library or executable Modules and use: Let you control the organization, scope, and privacy of pat..
-
[Rust] 6. enum과 match에 대하여rust 2023. 2. 2. 08:27
- 하나의 토픽내에 여러가지 상황이 존재하지만 한번에 하나의 상태만 존재하는 경우 enum type 을 사용할수 있다. - ::문법을 통해 인스턴스를 생성한다. enum IpAddrKind { V4, V6, } let four = IpAddrKind::V4; let six = IpAddrKind::V6; - enum의 각 변수에 우리는 값을 직접 할당해줄수 있다. - 같은 enum 이라고 변수별로 같은 타입의 값을 가져야 하는 것은 아니다 - 다양한 타입이 변수에 들어갈수 있으며 struct형태역시 가능하다. enum IpAddr { V4(u8, u8, u8, u8), V6(String), } let home = IpAddr::V4(127, 0, 0, 1); let loopback = IpAddr::V6..
-
[Defi] 디파이 시작해보기(1)rust 2023. 2. 1. 19:04
블록체인 과정 부트캠프를 듣기도 하고 web3 프로젝트를 진행해 보기도 해서 메타마스크랑 카이카스는 깔려있는데 테스트넷으로 밖에 실제 이용을 안해봤었다. 정작 교육이나 개발 이외의 목적으로 가상자산을 사용해본적이 없었고 그냥 테스트용 코인만 사용해봤었다. 애초에 업비트로 코인거래도 한번 안해본 상황에서 갑자기 블록체인에 꽂혀서 공부하게 되기도 했고 투자관점으로도 돈을 대부분 주식에 넣어놓다 보니 가상자산에 대해서 필요성을 느껴본적도 없었다 그래서 가상자산 관련 경험이 개발관련해서 밖에 없었다. 그래서 준비하는 기간에 디파이를 사용해볼 생각이다. 그래서 지금 온몸으로 불편함은 느끼는중이여서 그불편함을 기록하는 목적으로 적는 글이다. http://bit.ly/3jgTCY3 [메타마스크] 해외거래소 없이 이더..
-
[Rust] 5. struct에 대하여rust 2023. 1. 31. 23:13
https://doc.rust-lang.org/book/ch05-01-defining-structs.html 링크를 복습하면서 정리하는 글이며 js 나 solidity 를 사전지식으로 하는상황에서 비슷한 부분은 정리하지 않은 글이다. Struct Type > 기본구조 struct User { active: bool, username: String, email: String, sign_in_count: u64, } - 다양한 타입의 필드를 가지고 있고 순서에 상관 없이 필드에따라 값을 지정해줄수 있다. > 인스턴스 생성 과 syntax let user1 = User { active: true, username: String::from("someusername123"), email: String::from(..
-
[Rust] 4.ownership(3). slicerust 2023. 1. 28. 19:42
Ownership Rule - value 는 owner 로 불리는 variable을 가지고 있다. - value의 owner에 해당하는 variable 은 하나만 존재한다. - owner 에 해당하는 varialble 이 scope 을 벗어나면 value는 drop 된다. 이전에 ownership을 move 하지 않으면서 값을 전달하는 방법으로 value의 값만 참조하고 ownership은 갖지않는 reference 라는걸 알아봤는데 그와 비슷하게 ownership을 가지지 않는 데이터 타입으로 slice 가 있다. let s = String::from("hello"); let slice = &s[0..2]; let slice = &s[..2]; let slice = &s[0..len]; let slic..
-
[Rust] 4. ownership(2).함수와 ownershiprust 2023. 1. 28. 16:01
Ownership Rule - value 는 owner 로 불리는 variable을 가지고 있다. - value의 owner에 해당하는 variable 은 하나만 존재한다. - owner 에 해당하는 varialble 이 scope 을 벗어나면 value는 drop 된다. 함수와 Ownership 함수에 인자로 전달해주는경우 스택에 저장된 데이터는 copy되서 전달 되지만 heap 데이터 같은 경우는 ownership이 함수로 move 되면서 기존 변수는 유효하지 않게 된다. fn main() { let x = 5; func(x); println!("{}",x); // x 는 copy한값이 함수에 전달되었기 때문에 여전히 유효하다. let s = String::from("hello"); func2(s);..
-
[Rust] 4. ownership(1). ownership, 변수와 ownershiprust 2023. 1. 28. 10:37
https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html 정리하는글이다. 메모리관리 - 명시적 할당 및 해제 - garbage collector - ownership 개념을 통해 compile time에 방지(rust에서의 메모리관리) 스택과 힙 - 런타임에 사용할수 있는 메모리 공간의 종류 이며 각기 다른 방식으로 구조화 되어있다. - value 는 스택이나 힙에 저장되며 어디에 저장 되느냐에 따라 동작방식에 영향을 준다. - 컴파일 타임에 크기가 유동적이거나 정해지지않은 경우 데이터는 힙에 저장 되며 그외의 경우는 스택에 저장된다. - 스택에 저장할수 있는 데이터는 항상 스택의 top 위치에 저장한다. - 힙에 저장해야하는 데이터는 힙 안의 빈지점..