전체 글 660

Rust - 8. 패키지, 크레이트, 모듈

c기준으로 header 만들고 라이브러리 숨기는 그런거 하는듯. 파이썬이면 바이너리로 만들고 api 문서 작성하는 그런 느낌이려나 1. 패키지와 크레이트 크레이트: 라이브러리나 실행 가능한 모듈로 구성된 트리 구조입니다. 컴파일 한 차례에 고려하는 가장 작은 코드 단위 여러 모듈을 담을수 있음. 모듈은 크레이트와 함께 컴파일 되는 다른 파일들에 정의되어있을수 있음. 바이너리일수도 있고 라이브러리 일수도 있음. 러스트에선 크레이트는 주로 라이브러리(라이브러리 크레이트)와 혼용해서 사용함. 바이너리 크레이트: 커맨드 라인 프로그램이나 서버 처럼 실행 가능한 실행 파일로 컴파일할수 있는 프로그램. main 함수를 포함하고 있어야함. cargo new {binary} src/{binary}.rs 라이브러리 크레..

STUDY/Rust 2024.02.19

이번 주를 돌아보며 (0212~0218)

지난주보다 더 회사에 가기 싫었던 주다. 회사에서 크게 한 일은 없지만 앉아있는 것 자체가 너무 힘들었다. 나랑 비슷한 연차인 분들과 자주 커피마시러 나가긴했지만 말이다. 다음주가 되면 더 격렬히 나가고 싶지 않을수도 있을 것같다. 그쯤이면 하루이틀쯤 연차를 써서 여행이라도 다녀와야겠다. 왜 회사에 가기 싫었는지 계속 생각해봤는데 부담감이 크게 느껴져서 그런듯하다. 팀원들이 직접적으로 부담을 주는건 아니고 내가 이상하게도 그렇게 느끼고 있다. 지난주 회고에 "내가 업무를 잘 못따라 간다는 느낌이 들어서인건지" 라고 적었는데 이것도 맞다. 즉, 다시 보면 내가 업무를 잘 해내고 있지 않는데 3년차가 되어버렸고 그에 대한 압박감이 계속 들고 있다고 볼수 있다. 팀엔 나보다 더 잘하는 사람들이 많아서 따라가고..

OTHERS/내 생각 2024.02.18

Rust - 7. 구조체, 열거형, 패턴 매칭

c,c++의 구조체(struct)랑 열거형(enum)과 많이 다른가? 튜플과 또 다른점은? 1. 구조체 Struct 정의 및 인스턴트화 서로 연관된 필드 및 데이터를 묶는 방법 struct struct_name { value_name: value_type, ..., } c/c++이랑 큰 차이없다. 구조체 선언 하고 구조체 내부 속성에 타입을 설정하면 된다. 값은 "."을 통해서 사용할수 있다. 가변적으로 사용하려면 let mut st: struct_name; 이런식으로 선언하면 된다. 구조체 내 특정 값만 가변적으로 사용할순 없다. 필드 초기화 축약법 fn build_user(email: String, username: String) -> User { User { active: true, username..

STUDY/Rust 2024.02.17

Rust - 6. 소유권

러스트의 가장 독특한 특성이라고한다. 가비지 콜렉션을 사용하지 않기 위한 방법이라고 대충 본거같은데 한번 열심히 읽어봐야지. (사실 여러번 읽어봤는데 이해안되는 중이라 더 읽어보는중) 0. Garbage Collection 메모리 관리 방법 중 하나. 프로그래머가 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 자동으로 찾아내어 해제하는 기능이다. 반복적으로 찾기 때문에 오버헤드가 있다. GC는 python, java, javascript 등에서 쓰인다. (c, c++은 동적으로 메모리를 할당하고 사용하지 않는 경우 직접(수동으로) 해제해야한다.) 종류로는 Tracing GC, Reference Counting based GC 가 있다. 1. 소유권 GC를 사용하지 않고 메모리를 관리하는..

STUDY/Rust 2024.02.16

Rust - 5. 문법/함수, 주석, 제어흐름문

1. 함수 fn func_name(param_name: param_type) -> ret_type { // code } fn 키워드를 사용한다. 매개변수를 사용할수 있다. c와 다르게 함수의 위치를 고려하지 않아도 된다. header등에 미리 써넣지 않아도 된다. 파이썬도 함수 선언 순서 상관 없었던것 같다. 2. 표현식, 구문 차이는 명확한데 설명하는게 좀 어렵다. c 기준으로 값으로 사용할수 있으면 표현식이고 값으로 사용할수 없어도 실행이 되면 구문이라고 배웠던거같은데. 러스트도 비슷하긴한데 조금 다르다. 세미콜론이 붙으면 구문, 붙이지 않아도 사용할 수 있으면 표현식.(제대로된 설명이 맞는진 모르겠다.?) 표현식은 결과 값을 평가하고 반환함 구문은 동작을 수행하고 값을 반환하지 않음 아래에서 예시를..

STUDY/Rust 2024.02.15

Rust - 4. 문법/변수, 데이터 타입

나처럼 찍먹하는 사람들한테는 가장 재미있는 부분인 문법이다. 외국어 배울때 알파벳만 배우는 거랑 비슷하다. 1. 변수와 가변성 러스트의 변수는 기본적으로 immutable(불변)하다. 기본적으로 값이 어디서 어떻게 바뀔지 추적할 필요가 없다고 한다. mut이라는 키워드를 추가하면 mutable(가변) 변수를 생성할수 있다. 이 변수는 코드 내에서 값이 바뀔 것이라고 명시적으로 전달한다. "3. 추리게임 만들기"에서 mut 이라는 키워드를 사용했다. 상수(const)와는 다르다. 상수 상수는 항상 불변이므로 mut와 함께 사용할수 없다. 상수는 전역스코프를 포함해서 어떤 스코프에서도 선언 가능하다. 상수는 반드시 상수 표현식으로만 설정될수 있다.런타임으로 계산하는,변수나 함수 반환값이 들어간 식으로 표현하..

STUDY/Rust 2024.02.14

Rust - 3. 추리게임 만들기 (with python)

Rust로 추리게임(guessing game)을 만들면서 대략적인 문법을 공부해보고 그나마 잘하는 파이썬과 비교하면서 뭐가 다른지 비교해본다. 빠르게 프로젝트를 생성하고 전체 코드를 비교해보자 // Cargo.toml [dependencies] rand = "0.8.5" // main.rs use std::{cmp::Ordering, io}; use rand::Rng; fn main() { println!("Guess the number!"); let secret_number = rand::thread_rng().gen_range(1..=100); loop { println!("Please input your guess."); let mut guess = String::new(); io::stdin() ..

STUDY/Rust 2024.02.14

Rust - 2. 프로젝트 생성

설치까지 다했으니 이젠 hello world를 쳐볼 차례이다. 1. Hello, Rust World! 새로운 디렉토리를 만들고 러스트 프로젝트를 몰아넣자. 적당히 관리하기 편하게 $ mkdir rust $ cd rust $ pwd -- output -- /Volumes/T7/Study/rust 외장 하드에 폴더를 생성해서 /Volumes/ 라는 위치에 있다. 여기에 또 새로운 폴더를 만들고 main.rs 파일까지 만들어보자 $ mkdir hello-rust-world $ cd hello-rust-world $ vi main.rs main.rs는 아래와 같이 작성한다. fn main() { println!("Hello, Rust World!"); } 작성 후 아래 커맨드를 입력하면 프로그램 하나가 만들어..

STUDY/Rust 2024.02.13

Rust - 1. 설치

m1 맥미니를 사용하고 있어서 mac os 기준으로 설명(....하려 했는데 왜 설치 되어있는건지?) 아래 홈페이지에 들어가서 getting started 를 쭉 따라가면서 stable (안정) 버전으로 설치한다. https://www.rust-lang.org/ Rust Programming Language A language empowering everyone to build reliable and efficient software. www.rust-lang.org 0. 설치 유무 확인 혹시 설치가 되어있을수 있으니 터미널을 열고 아래 명령어를 입력해서 확인해보자. rustc --version -- output -- command not found: rustc or rustc 1.72.0 (5680fa..

STUDY/Rust 2024.02.13

Rust - 0. 시작에 앞서

왜 러스트? 회사에선 c 를 하고 있고 (C++은 안한다) 가끔 혼자서 파이썬 깔짝이는 수준으로만 한다. 그 이상으로 하는건 없어서 그럴거면 새로운 언어라도 배워보자 하는 생각이 있어서 시작한다. 내가 잘 모르는 언어들은 많을건데 왜 굳이 러스트냐고 물어보면 거기에 대해선 딱히 할말은 없다. 그냥 해보고싶었다. 시스템 프로그래밍? 얼마나 갈진 모르지만 그래도 책까지는 끝내보자는 생각이다. 참고자료 책 프로그래밍 러스트 2nd edition - https://product.kyobobook.co.kr/detail/S000200629958 이 책을 보기전에 TRPL이라고 불리는 자료부터 볼 예정이다. 자료 https://doc.rust-kr.org/ - TRPL 한글판 https://doc.rust-lang..

STUDY/Rust 2024.02.13