Rust
3 posts
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
Rust를 알아보자 - 2부

제네릭 러스트에서 제네릭 함수는 에 타입을 구체화 한다. 런타임에 타입을 구체화하는 타입 소거와는 다르다. 제네릭의 upperbound로써 Trait을 사용하는 것은 매우 자주 있는 일이다. 이는 해당 타입이 해당 Trait을 구현했다는 것을 말하며, 제네릭 함수 내에서 Trait의 메서드를 사용할 수 있게 해준다. 모든 제네릭 타입 T가 Display를 구현했다는 제약 upperbound가 있기 때문에 함수 내에서 로 포매팅이 가능하다. 하나의 upperBound에 여러 조건을 명시할 수도 있다. 이 경우 + syntax로 Trait들을 연결한다. where 문법을 사용하면 타입 파라미터의 제약조건을 분리할 수 있다. rust의 panick은 런타임 익셉션이다. 은 으로써 제네릭하며 자바의 과 동일하다. Option의 값을 꺼내는 메서드는 이다. Optional의 get과 동일하다고 보면 된다. unwrap할 option이 None이면 러스트는 런타임익셉션(패닉이라고 부름)을 …

March 29, 2023
Rust
라이프타임과 변성

Variance 더 긴 라이프타임을 가지는 변수를 해당 타입의 더 짧은 라이프타임에 할당할 수 있다. 이는 서브타입은 적어도 부모타입 만큼의 효용이 있을 때, 공변적이라고 여겨진다. 반면 부모타임이 적어도 서브타입 만큼의 효용이 있을 때 반공변적이라고 여겨진다. 함수는 인자타입에 대해 반공변적이다. 즉 인자에 구상적인 타입을 정의한 함수는 그보다 더 추상적인 타입을 인자로 받는 함수로 대체할 수 있다. 불변 참조 타입은 라이프타임과 T 타입에 대해 모두 공변적이다. 그러나 가변 참조는 라이프타임 a에 대해서는 공변적이지만 T에 대해서는 무공변이다. 즉 가변참조 &‘a mut T는 라이프타임 ‘a는 보다 구체적인(보다 긴) 라이프타임으로 대체할 수 있어 공변적이지만, T 타입은 T의 서브타입으로 대체할 수 없고 정확하게 T 타입만을 소비한다. 그 이유는, 가변참조는 참조를 변경할 수 있고, 이 참조는 공변적으로 참조를 변경할 수 있기 때문에 공변성을 알 수 없다. 즉 는 에…

March 28, 2023
Rust