일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Monthly Checklist
- 지표
- 생성 패턴
- amazon ecs
- MAPF
- github
- terraform
- 논문 정리
- DevOps
- Playwright
- study
- 구조 패턴
- 오블완
- Til
- 디자인 패턴
- Go-lang
- docker
- 도커 주의사항
- 14일 공부
- 티스토리챌린지
- AWS 비용 절감
- AWS
- 경로 계획 알고리즘
- leetcode
- Rust
- 실용주의 프로그래머
- 신혼 여행
- PostgreSQL
- 청첩장 모임
- ssh
- Today
- Total
목록14일 공부 (13)
밤 늦게까지 여는 카페

15. Smart Pointers이제 rust에서 지원하는 스마트 포인터 기능에 대해서 공부할 시간입니다. 스마트 포인터는 C++, Nim, Zig 등 여러 프로그래밍 언어에서 지원하고 있는 기능입니다.대표적으로 C++에는 unique_ptr, shared_ptr 등의 스마트 포인터 기능이 있습니다.rust에서 가장 많이 사용되는 스마트 포인터인 Box, Rc, Ref, RefMut, RefCell 에 대해 공부해보겠습니다. 15.1. Using Box to Point to Data on the HeapBox는 메모리를 heap에 할당하는 것 이외의 기능이 없는 스마트 포인터입니다.추가적인 기능이 없지만 다음과 같은 상황에서 많이 사용된다고 하네요!컴파일타임에 객체의 정확한 크기를 알지 못하지만 런타임에..

14. More about Cargo and Crates.io챕터 1에서 공부했던 cargo가 기억나시나요?https://goodahn.tistory.com/257챕터 14에서는 cargo 명령어와 crates에 대해서 보다 자세히 공부하는 시간을 가집니다. 1차적으로 라이브러리가 아닌 프로그래밍 언어 차원에서 이런 지원을 한다는 것이 굉장히 매력적이었고주석을 이용해서 테스트 케이스를 관리할 수 있다는 것이 킥이었습니다.https://doc.rust-lang.org/beta/book/ch14-02-publishing-to-crates-io.html#documentation-comments-as-tests 그 외에는 엄청 특별하다고 생각되지 않았습니다.프로그래밍 언어 자체적으로 이런 기능들을 지원한다는 것..

12. An I/O Project: Building a Command Line Program챕터 12에서는 지금까지 공부한 내용을 바탕으로 grep 이라는 유닉스 프로그램을 간단하게 만들어봅니다. 정말 친절하게 설명해주니 꼭 읽어보고 실습해보는 것을 추천합니다! 13. Functional Language Features: Iterators and Closures이번에는 rust의 기능 중에서 함수형 프로그래밍 언어와 유사한 기능들을 알아보겠습니다.대표적으로 closure, iterator가 있는데 알아보시죠! 13.1. Closures: Anonymous Functions that Capture Their Environment일반적으로 clousre는 변수에 저장하거나 다른 함수의 인자로 전달할 수 있는..

11. Writing Automated Tests지금까지 rust를 공부하면서 프로그래머들의 실수를 컴파일 단계에서 미리 방지해주는 것을 알 수 있었습니다.강력한 타입 시스템과 엄격한 메모리 관리를 통해서 가능했는데 이것이 모든 버그를 미리 알려준다는 것은 아닙니다. 바로 프로그램의 로직 상의 문제는 컴파일러가 알려줄 수 없는데요.이럴 때 필요한 것이 바로 테스트겠지요!챕터 11에서는 rust에서 테스트 케이스를 작성하는 법을 공부해보겠습니다.11.1. How to Write Tests일반적으로 테스트는 다음 3단계로 구성됩니다.1) 필요한 데이터와 상태를 준비2) 테스트 하고 싶은 코드 실행3) 원하는 결과가 나오는지 확인 이를 위해서 프로그래밍 언어들은 테스트 프레임워크를 제공하고테스트 케이스라는 것..

10. Generic Types, Traits, and Lifetimes프로그래밍 언어에는 '중복'을 최소화하기 위해서 여러 기능들이 있습니다.rust에는 generic, trait, lifetime 기능들이 있다는데 한번 공부해보도록 하겠습니다! 10.1. Generic Data Typesrust의 generic 타입은 함수 입력값의 타입만 다르고 동작은 동일할 때 유용하게 사용됩니다.심지어 성능 저하도 발생하지 않습니다! 다음과 같이 i32, char에 대해서 따로 정의한 largest 함수를 하나로 합칠 수 있습니다! 여기서 눈여겨 볼 것은 T: std::cmp::PartialOrd 입니다. 이것이 바로 trait인데 >, generic은 함수 뿐만 아니라 struct, 메소드에도 사용 가능한데 ..

9. Error Handlingrust는 에러를 1)회복 가능한 에러와 2)회복 불가능한 에러, 2가지로 구분합니다.회복 가능한 에러의 예시로는 파일을 못 찾았거나 DB에서 원하는 값을 못 찾는 것이 있고회복 불가능한 에러의 예시로는 array의 존재하지 않는 index에 접근하는 것이 있습니다.이를 위해서 Result 타입과 panic이 있는데 한번 공부해보겠습니다!+++ rust에는 exception이 없습니다!9.1. Unrecoverable Errors with panic!rust는 golang과 유사하게 panic! 매크로를 호출함으로써 panic을 강제로 발생시킬 수 있습니다.RUST_BACKTRACE 환경변수를 이용해서 백트레이스도 출력할 수 있습니다. 또한, 존재하지 않는 index로 접근..