일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- rust
- 알고리즘
- Network
- BlockChain
- 파이썬
- dockerfile
- Fast API
- BAEKJOON
- Kubernetes
- 코어 이더리움 프로그래밍
- Ethereum
- Python
- AWS
- 동시성
- Container
- 블록체인
- Thread
- 러스트
- IMAGE
- 백준
- function
- guru
- docker
- 전문가를 위한 파이썬
- Refactoring
- fluent python
- RabbitMQ
- 이더리움
- 플랫폼
- Algorithm
- Today
- Total
글쓰기 | 방명록 | 관리 |
목록Rust (10)
Victoree's Blog
모듈 mod와 파일시스템 $ cargo new communicator --lib $ cd communicator이는 src/lib.rs를 생성한다. mod client { fn connect() { } } mod network { fn connect() { } mod server { fn connect() { } } } --------------------------- communicator ├── client └── network └── server이를 두 파일로 쪼갠다면 lib.rs 파일에 mod client; 이라고 선언하고 client.rs라는 파일을 만들어 그곳에 모듈을 정의하면 된다. 이처럼 작성했을 때 러스트는 lib.rs에서 client 모듈을 선언하고 있지만 코드블록을 세미콜론으로 대체함..
표준 라이브러리 Option과 Result : 어떤 값이 있거나 없거나 하는 경우, 그리고 오류 처리에 사용합니다. String: 기본적인 문자열 타입으로, 문자열 데이터를 소유하는 경우에 사용합니다. Vec: 가변 크기의 표준 벡터 타입입니다. HashMap: 해시 알고리즘을 따로 지정할 수도 있는 해시맵 타입입니다. Box: 힙 데이터에 대한 소유 포인터입니다. Rc: 힙에 할당된 데이터에 대한 참조 카운팅 공유 포인터입니다. Option 과 Result Result 타입 pub enum Result { Ok(T), Err(E), }Result 타입은 열거형으로 enums라고 부르기도 한다. Result의 variants는 Ok와 Err이다. Ok는 처리가 성공했음을 나타내고, 성공적으로 생성된 결과..
흐름제어 if 문 let mut x = 10; x = if x % 2 == 0 { x / 2 } else { 3 * x + 1 }; if 는 표현식으로도 사용할 수 있다. 표현식 뒤에는 ;이 붙는다. 블록은 타입과 값을 갖는다. 그래서 return을 했을 때에는 type 추론이 어려워서, 함부로 return을 사용하면 안된다. 예를 들어, 세미콜론 없이 {} 블록을 반환하는 경우 usize의 타입을 갖는다. fn fibo(x: i32) -> i32 { if x == 0 { // This starts a block 0 // First implicit return } else if x == 1 { // This also starts a block 1 // First implicit return } // Th..
뭐 해답은 따로 있지만,, 그냥 기록용.. :) 1. 건강상태 모니터링 시스템 건강상태 모니터링 시스템 - Comprehensive Rust 🦀 당신은 건강 상태를 모니터링하는 시스템을 구현하는 일을 하고 있습니다. 그 일환으로 당신은 사용자의 건강 상태 통계를 추적해야합니다. 당신의 목표는 User 구조체의 impl 블록의 빈 함수를 google.github.io // TODO: 구현이 완료되면 아래 줄은 삭제합니다. #![allow(unused_variables, dead_code)] struct User { name: String, age: u32, weight: f32, } impl User { pub fn new(name: String, age: u32, weight: f32) -> Self {..
1. 구조체 구조체의 구성요소들은 각각 이름을 명명할 수 있고, 각자 다른 타입을 지닐 수 있음. 구조체의 인스턴스는 반드시 변경가능(mutable) 해야한다. fn main() { struct User { username: String, email: String, sign_in_count: u64, active: bool, } fn build_user(email: String, username: String) -> User { User { email: email, username: username, active: true, sign_in_count: 1, } } // 변수명과 구조체의 필드명이 같다면, 필드 초기화 축약법(field init shorthand) 을 이용할 수 있습니다 // User { ..
라이프 타임과 참조자 유효화 보통의 언어에서 참조자들의 라이프타임은 암묵적이고 추론을 통해 알게되는데, 러스트에서는 변수의 타입이 여러가지가 가능한 것처럼 참조자들의 라이프 타임 역시 제네릭 라이프타임 파라미터를 작성하여 이 관계들이 명시적이고, 런타임에 실제 참조자가 확실히 유효하도록 확신할 수 있도록 한다. 댕글링 참조자 방지 라이프 타임의 주 목적은 댕글링 레퍼런스를 방지하는 것이다. 대부분의 코드내의 문제는 댕글링 참조자를 만드는 시도, 사용가능한 라이프 타임들의 불일치이다. { let r; { let x = 5; r = &x; } println!("r: {}", r); } // 결과 error: `x` does not live long enough | 6 | r = &x; | - borrow o..
메모리 관리 C/C++은 '개발자가 직접 메모리를 할당&해제 하여 메모리를 관리'하는 방식이고, Java나 C#의 경우 '가비지 콜렉터가 메모리를 관리'하는 방식으로 동작하는데, Rust의 경우는 언어 자체에 제약을 걸어서 메모리를 컴파일 타임에 싹 다 추적하는 방식을 택하였다. 그 핵심 개념이 ownership(소유권)이다. Stack 과 Heap 스트링으로 따지면, 스택에는 스트링 포인터와 길이(length), 필요 공간(capacity) 의 데이터를 가지고 있고, heap에는 실제 스트링 텍스트 데이터들이 보관된다. * Stack 로컬 변수들을 위한 지속적인 메모리 영역 Value들은 컴파일 타임에 정해 사이즈를 할당받는다. 스택 포인터를 따라가면 되기 때문에, 극도로 ..
1. DataType:: [Scala와 Compound] 1) Scala 하나의 값으로 표현되는 타입 정수형, 부동소수점 숫자, boolean, 문자 * signed / unsigned int signed 변수 : -(2^(n - 1)) 부터 2^(n - 1) - 1까지 표현 가능 unsigned 변수 : 0부터 2^n -1까지 표현 가능 * 부동소수점 fn main() { let x = 2.0; // Default가 f64 let y: f32 = 3.0; // f32 } 2) Compound Array (각 요소가 다 같은 타입), Tuple (다른 타입의 값들을 하나로 묶을 수 있음) Array 배열을 고정된 길이를 갖으며, 한번 선언되면 크기는 커지거나 작아지지 않음 Tuple튜플은 compound..
What is Rust 1. 정형화된 컴파일 언어 rustc는 백엔드로 LLVM(Low Level Virtual Machine)을 사용함 2. statically-typed 상수, 변수, 함수 등에 대한 타입을 컴파일 타입에 확인하는 언어 3. 메모리 안정성 Buffer Overflow나 Dangling Pointer와 같은 메모리에 접근할 때 생길 수 있는 문제에 대해 얼마나 보호받는가. Buffer Overflow : 해당 영역에 할당된 메모리 버퍼보다 데이터가 넘치게 되면, 해당 정보를 덮어쓰고 오류를 발생시킬 수 있음 Dangling Pointer : 포인터가 해제된 메모리영역을 가르켜 더 이상 메모리가 유효하지 않은 경우. Rust는 컴파일 시 메모리 안정성을 확인함으로 컴파일 이후에는 이를 걱..
Hello. Rust 평소 함수형 프로그래밍 공부를 좀 해보고 싶어서 함수형 언어가 뭐가 있나.. 들여다보다 Rust를 알게되었다. 블록체인 분야에서 일을 하다보니, Polkadot, Solana 같은 네트워크에서는 Rust로 컨트랙트 개발이나 노드 개발을 Rust로 한다는 걸 알게되어 더 관심이 갔던 Rust! 블록체인 외에도 서버, 분산처리, WASM에서도 활발히 사용되는 언어인 Rust를 한번 공부해보기로 맘 먹었다. 공부하기 전에 좀 알아보니 프로그래밍 언어론적으로 많은 것들이 고려된 언어처럼 보였고, 메모리 관리나 동시성 프로그래밍 관련한 내용들도 눈에 많이 보여서 컴퓨터공학적으로 Computational Thinking 능력을 키울? 언어로 보여 깊이 공부해보려 한다. Rust Ecosyste..