일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS
- 구조분해 할당
- grafana
- transit gateway
- Site-to-Site VPN
- prometheus
- VPC
- JavaScript
- rust
- api gateway
- docker swarm
- Service
- null 병합 연산자
- 러스트
- Custom Resource
- cognito
- Endpoints
- docker
- On-Premise
- 단축 평가
- optional chaining
- 비구조화 할당
- Await
- Proxy Resource
- elasticsearch
- 자바스크립트
- 옵셔널 체이닝
- Kubernetes
- 온프레미스
- vgw
- Today
- Total
목록Rust (10)
만자의 개발일지

지난 포스팅에서는 제네릭에 대해 알아보았습니다. 이번 포스팅에서는 라이프타임에 대해 알아보도록 하겠습니다.라이프타임(Lifetime)라이프타임은 참조자가 유효한 범위를 정의하는 개념입니다. 모든 변수와 함수는 라이프타임을 갖습니다. 컴파일러는 모든 참조자의 라이프타임을 컴파일 시점에 분석하여, 참조자의 유효성을 보장하고 댕글링 참조를 방지합니다. 라이프타임은 보통 'a, 'b와 같은 형태로 표기합니다. 다음 예시를 보겠습니다.fn main() { let a; // ---------+-- 'a // | { // | let b = 10; ..

지난 포스팅에서는 참조와 대여에 대해 알아보았습니다. 이번 포스팅에서는 제네릭에 대해 알아보도록 하겠습니다.제네릭(Generics)제네릭은 함수, 구조체, 열거형, 메서드 등에서 특정 타입을 직접 명시하는 대신 타입 매개변수(type parameter)를 사용하여 추상적인 타입을 정의하는 방식입니다. 제네릭을 사용하면 하나의 코드 정의로 여러 다른 타입에 대해 동작하는 코드를 작성할 수 있고, 이를 통해 중복되는 코드를 줄일 수 있습니다. Rust의 제네릭은 컴파일 타임에 단형성화(monomorphization)되어 구체 타입으로 변환되기 때문에 런타임 성능에 영향을 미치지 않는다는 장점이 있습니다. 제네릭은 타입 별칭, 구조체, 열거형, 함수, 메서드, 트레이트 등 다양한 곳에서 사용됩니다.제네릭은 기..

지난 포스팅에서는 소유권과 메모리 모델에 대해 알아보았습니다. 이번 포스팅에서는 소유권의 이동 없이 데이터를 다루는 방식인 참조와 대여에 대해 알아보도록 하겠습니다.참조(References)와 대여(Borrowing)Rust에서 참조는 데이터의 메모리 주소를 가르키는 포인터와 유사합니다. 참조를 통해 실제 데이터를 가지는 것이 아닌 해당 데이터의 메모리 주소를 가르킴으로써 소유권을 가져오지 않고 해당 데이터에 접근할 수 있습니다. 다음 예시를 보겠습니다.fn main() { let s1: String = String::from("hello"); let s: &String = &s1;}s는 참조자(&)를 사용해 s1의 값을 참조하였고 String이 아닌 &String 타입을 사용하였습니다. 이는..

저번 포스팅에서는 패턴 매칭에 대해 알아보았습니다. 이번 포스팅에서는 소유권과 메모리 모델에 대해 알아보도록 하겠습니다.메모리 모델(Memory Model)Rust에서 런타임에 사용되는 메모리 영역으로는 스택과 힙이 있습니다.스택은 데이터를 들어온 순서대로 저장하고, 역순으로 제거하는 LIFO(last in, first out) 방식입니다. 스택에는 기본 타입(i32, f64, char 등)과 커스텀 타입(enum, struct 등) 같이 크기가 정해져있는 데이터가 저장됩니다. 또한 스택은 데이터가 순차적으로 추가되고 제거되기 때문에 메모리 관련 오버헤드가 거의 없어 속도가 빠르다는 장점이 있습니다. 단, 컴파일 타임에 크기를 알 수 없거나, 변경될 수 있는 데이터들은 스택이 아닌 힙 메모리에 저장해야합..

저번 포스팅에서는 열거형에 대해 알아보았습니다. 이번 포스팅에서는 패턴 매칭에 대해 알아보도록 하겠습니다.패턴 매칭(Pattern Matching)패턴 매칭이란 값의 구조에 따라 코드를 분기하는 기능입니다. 패턴 매칭은 구조체, 열거형, 튜플, 배열 등 다양한 데이터 타입에서 사용할 수 있으며, 각 상황에 맞는 표현식을 사용하여 패턴을 처리할 수 있습니다.Rust에서 패턴을 처리하는 표현식은 match, if let, while let, for, let, function parameter(함수 매개변수), matches! 등이 있습니다.각각이 무엇이고 어떻게 사용하는지 알아보도록 하겠습니다. matchmatch 표현식은 패턴 매칭에서 가장 중요한 부분 중 하나입니다. match는 값을 여러 패턴과 비교하..

저번 포스팅에서는 구조체와 메소드 & 연관 함수에 대해 알아보았습니다. 이번 포스팅에서는 또 다른 커스텀 타입 중 하나인 열거형과 패턴 매칭에 대해 알아보도록 하겠습니다.열거형(Enums)열거형은 다양한 형태의 값(variant)를 하나로 묶어주는 타입입니다. Rust에서의 열거형은 단순한 고정된 값 뿐만 아니라 튜플, 구조체 타입의 값들도 가질 수 있습니다. 열거형은 enum 키워드를 사용해 정의할 수 있습니다. 다음 예시를 보겠습니다.enum Message { Quit, // unit-like Move { x: i32, y: i32 }, // struct-like Write(String), // tuple-like ChangeColor(u8, u8, u8), // tuple-li..