안녕하세요.
|
개발자 Inu입니다.

Rust for Rustaceans 책에 나오는 학습 리소스 정리

Rust for Rustaceans 책에 나온 학습 리소스 정리 Rust for Rustaceans 책에 대한 리뷰는 언젠가 한번 정리해서 업로드할 수 있도록 하겠다. 이번 포스팅은 저자가 추천하는 큐레이션된 각종 리소스들을 정리해보려 한다. 공식 Rust 블로그 https://blog.rust-lang.org/ Edition 가이드 https://doc.rust-lang.org/edition-guide/ Inside Rust 블로그 - 러스트 개발팀의 ‘비공식’ 블로그 https://blog.rust-lang.org/inside-rust/ 다양한 Rust 작업 그룹 소개 페이지 https://www.rust-lang.org/governance Internals - Rust 토론 커뮤니티 https://internals.rust-lang.org/ Rust 유저 포럼 https://users.rust-lang.org/ Rust 서브레딧 https://www.reddit.com/r/r…

June 09, 2023
rust
Rust

PhantomData 는 struct의 drop에 있어, T타입이 struct에 없어도 있는 것처럼 취급하게 해준다. PhantomData는 사이즈가 zero인 zero-sized-type이다. 이는 drop의 메커니즘을 이해해야 하는데, drop은 어떤 struct에 대해서, 내부 필드에 있는 타입 T가 있을 때 T가 Drop trait을 구현했는지 찾아서 실행한다. 즉, 어떤 복합타입이 있다면 내부 타입에 대해서 전부 Drop Trait을 찾아 이를 같이 실행한다. 그런데 만약 해당 타입이 포인터, 혹은 박스나 스마트 포인터 등으로 T를 가리키고 있다면(즉 소유하지 않는다면) T가 Drop trait을 구현했는지 여와 상관없이 T의 drop을 실행하지 않는다. 따라서 T의 drop을 실행하기 위해서 struct에 별도의 필드를 할당하는데, 이 때 를 할당한다. 컴파일러는 를 보고, T의 Drop trait을 찾아 compount struct를 드랍할 시 drop을 실행한다.…

April 25, 2023
rust
Rust를 알아보자 - 1부

Rust를 알아보자 -1부 rust는 유니코드를 지원 (다국어 가능) 원시자료형 정수형 signed i8,i16,i32,i64,i128, isize isize는 유저 컴퓨터 운영체제의 비트 수를 의미(64비트 or32비트) 변수 타입을 지정하지 않은 정수는 기본적으로 i32로 할당 unsigned u8,u16,u32,u64,u128,usize Rust에서 char 타입으로 변환될 수 있는 정수는 u8 이 유일함. String::len() 함수는 문자열 길이가 아니라 바이트 크기를 반환함 char는 항상 4바이트이지만 문자열은 그 이하일 수도 있음(최소 1바이트) 문자열의 길이를 알려면 String.chars().count()를 호출해야 함. 정수형의 타입을 명시 할 때 다음과 같이 적을수도있음 크기가 다른 정수형(u8, u128) 끼리는 서로 연산할 수 없음 다음의 경우에 rust는 타입을 추론해줌 my_float과 my_other_float의 Add연산에서 매개변수가 f32이므로…

April 22, 2023
Rust
go 시리즈

go는 포인터의 라이프타임이 데이터보다 더 긴 경우, 해당 데이터를 자동으로 힙에 할당해준다. 이를 클로져라고 한다. 예를 들어 이 함수는 클로져를 반환하고, 이 때 클로져의 라이프타임은 fib() 함수의 두 지역변수를 포함하기 때문에 go 컴파일러는 이 두 변수를 힙에 할당한다. 모든 클로저가 포함하는 () 것은 변수의 값이 아니라 변수의 참조/포인터 이다. 따라서 c 언어 등에서는 클로져를 반환할 때 dangling pointer같은 문제가 발생하는 것이다. 슬라이스를 초기화 하지 않으면 nil이다. 그러나 초기화 했지만 아무 원소도 없는 empty slice일 수도 있다. 중요한 건 두 경우 모두 len이 0이라는 점이다. make로 슬라이스를 만들 때 cap을 지정하지 않으면 언제까지고 append할 수 있다. 그러나 cap을 지정한 경우에는 cap 이상으로는 append하더라도 변하지 않는다. 가장 헷갈리는점 : nil map에 무언가를 insert하면 에러가 나지만 n…

April 17, 2023
golang