일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Elasticsearch
- ES
- 코드
- 읽기쉬운코드
- Java
- Baekjoon
- 애자일프로그래밍
- 개발자
- 자바
- spring boot
- 클린코드
- database
- 애자일
- 그리디알고리즘
- 개발
- framework
- cleancode
- 그리디
- 엘라스틱서치
- 코딩
- API
- 애자일기법
- 프레임워크
- 백준
- 알고리즘
- JPA
- 데이터베이스
- Spring
- 코딩테스트
- 스프링
- Today
- Total
목록프로그래밍/RUST (24)
튼튼발자 개발 성장기🏋️
enum(Enumeration)은 예전에 java를 공부할 때 처음 알게되었고 직접 개발할 때 사용해본 경험은 없다. 그 enum이 rust에도 있다는 것."열거형"이라고 부르는 enum은 말 그대로 "값을 열거해서 유형을 define한 것"이다. 다음 코드를 보자.fn main() { // Family enum 정의 enum Family { // variants #1 Mother, Father, Brother, Sister, // variants #2 Mother(String), Father(String), Brother(String), Sister(String), } // 접근 #1 let mother = Family::Mother; let father = Family::Father; // 접근 #2..
메소드(Method)는 함수와 유사하게도 "fn" 키워드와 메소드 명으로 선언하게 되며, 파라미터와 반환되는 값을 가진다.하지만! 메소드 라는 녀석은 구조체 컨텍스트(Context)에 정의되는데, 첫 번째 파라미터는 항상 "self"다. 이 새로운 녀석의 파라미터는 메소드가 호출되는 구조체의 인스턴스라고 생각하면 된다. 1. 메소드 정의 메소드를 정의해보자. // 구조체 정의struct Rectangle { length: u32, width: u32,} // 메소드 정의impl Rectangle { fn area(&self) -> u32 { self.length * self.width // 넓이 계산 : 가로 x 세로 }} fn main() { let rect = Rectangle { length: 50..
"Structure"라고 불리는 구조체는 여러가지의 관련된 값을 함께 이름을 지정(naming)하고 package화 할 수 있는 사용자의 커스텀 데이터 형식이다. 구조체는 포스팅(https://maeng-dev.tistory.com/9)에서 다룬 튜플과 비슷하게 서로 다른 타입으로 구성될 수 있다.하지만 각각의 구성 요소의 이름을 지정하여 값의 의미를 분명하고 명확아게 알 수 있다. 이 이점 덕분에 튜플보다 다루기 쉽다. struct Family { // 구조체 정의 // 필드 mother: String, father: String, son: String, number: u64,} 구조체를 정의할 때, struct 키워드를 사용하고 구조체의 naming을 하면 된다. (name의 첫 글자는 대문자로 하자..
소유권을 갖지 않는 테이터 타입은 또 있다. 바로 "Slice"슬라이스를 사용하게 된다면 Collection의 전체가 아닌 연속된 요소(Element) Sequence를 참조 할 수 있게 된다. String에서 첫 단어를 찾는 코드를 보자.fn main() { let string_slice = String::from("String Slice"); let idx = get_index(&string_slice); println!("idx : {}", idx);} fn get_index(str: &String) -> usize { // 소유권 X let str_bytes = str.as_bytes(); // 들어온 str의 바이트를 겟! // enumerate : iterator의 결과 값을 직접 반환 (튜플..
다음 코드를 컴파일해보자.fn main() { let str = String::from("string"); let length = get_length(&str); println!("================= get_length() finish! ================="); println!("str의 값 : [{}]", str); println!("str의 길이 : [{}]", length);} fn get_length(func_str: &String) -> usize { println!("================= get_length() start! ================="); println!("func_str의 값 : [{}]", func_str); func_str.len(..
Rust Docs에 보면 다음과 같이 설명이 되어있다. With the String type, in order to support a mutable, growable piece of text, we need to allocate an amount of memory on the heap, unknown at compile time, to hold the contents. This means:The memory must be requested from the operating system at runtime.We need a way of returning this memory to the operating system when we’re done with our String. 직역하면.... String t..
Rust는 Ownership이라는 unique한 특징을 가진다. 개발을 하다보면 Memory Leak(메모리 누수)에 대해 깊은 생각에 빠질 때가 있다.메모리를 안전하게 사용하라고 나온 녀석이 garbage collector인데, 이 녀석은 완벽하게 메모리를 safe하게 사용하도록 해주진 않는다.rust는 이 garbage collector 마저 존재하지 않는다. 그렇다면 메모리 관리를 어떻게 해야할까? 언어 특징상 개발자가 직접적으로 메모리를 할당하고 해제하는 언어(대표적으로 C)가 있는가 하는 반면에 더 이상 사용되지 않는 메모리를 반환해주는 garbage collector를 가진 언어(대표적으로 java)가 있다. rust의 메모리 관리는 다음과 같이 설명되어있다.Memory is managed t..
Rust도 주석이 있다. 개발자에겐 주석만큼 중요한 것은 없다.개인적으로는 개발 진행 중, 3일 동안 손 놓고 있다가 다시 열어보면 하나도 이해 안되고 왜 이렇게 짰는지 도저히 모르는 경우가 많았다.그렇기 때문에 주석은 굉장한 매력을 가지고 있는 녀석. 내가 주석을 활용하는 경우는 다음과 같다.TODO 주석// TODO : 어떤 TODO인지 코드 수정 주석// println!("졸리다. 자고싶다...");println!("조금만 더 하자..."); 설명 주석// ~~~ 이기 떄문에 출력println!("조금만 더 하자..."); // 자고 싶은데 조금만 더 하자는 의미 주석을 잘 활용하면 자신의 코드를 보수하는 또 다른 개발자도, 이것 저것 많은 서비스 개발을 하는 개발자도, 취업 준비중인 개발자 지원자..