일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- 수학
- dfs
- 타입스크립트
- 프로그래머스 레벨 2
- Crawling
- Nestjs
- typescript
- 그래프
- 알고리즘
- 소켓
- 쉬운 문제
- javascript
- 자바스크립트
- HTTP 완벽 가이드
- type challenge
- Node.js
- 프로그래머스
- TCP
- 타입 챌린지
- socket
- ip
- 백준
- dp
- 레벨 1
- HTTP
- 크롤링
- BFS
- 문자열
- 가천대
- Today
- Total
목록프로그래밍/Rust (7)
kakasoo
소유권이 이전될 때의 문제 use std::io; // 어떤 외부 크레이트를 사용할지는 use로 명시 가능하다. fn main() { let mut input = String::new(); some_fn(input); io::stdin().read_line(&mut input); // (1) let mars_weight = calcuate_weight_on_mars(100.0); println!("weight on Mars: {}kg", mars_weight); } fn calcuate_weight_on_mars (weight: f32) -> f32 { (weight / 9.81) * 3.711 } fn some_fn (s:String) {} 이 코드에서 (1) 구간에는 에러가 났다. 이유는 이 라인에 ..
러스트에는 소유권(Ownership)이라는 개념이 있고, 이는 다른 언어에서는 보기 힘든 특성이다. 일단 소유권의 세 가지 규칙을 먼저 보자. 러스트에서는 변수(variable)가 각 값(value)에 대한 소유권을 가진다. 소유자(owner = variable)가 범위(scope)를 벗어나면 그 값은 해제(deallocate)된다. 특정 시점에 소유자는 단 하나만이 존재할 수 있다. 지난 번에 작성한 코드 use std::io; // 어떤 외부 크레이트를 사용할지는 use로 명시 가능하다. fn main() { let mut input = String::new(); // 구조체를 사용하여 빈 문자열을 생성한다. io::stdin().read_line(&mut input); // 주소를 참조할 수 있도록..
러스트도 다른 언어와 같이 표준 라이브러리들을 제공한다. ( Node.js로 치면 코어 모듈과 같다 ) 예를 들면 해시맵, 벡터, 그 외 수많은 자료구조가 존재하고 입출력 기본 요소 역시 포함된다. 이를 통해 사용자에게 직접 입력을 받아, 기존의 프로그램이 입력에 의해 동작하게끔 수정할 예정이다. 표준 라이브러리는 외부 크레이트로, 이 크레이트는 기본적으로 모든 곳에서 바로 사용할 수 있단 의미다. std - Rust std - Rust §The Rust Standard Library The Rust Standard Library is the foundation of portable Rust software, a set of minimal and battle-tested shared abstraction..
Basic Data Types Booleans : true 또는 false를 의미하며 Rust에서는 1byte 크기를 가진다. Character : Rust에선 4바이트의 크기이며, Rust에서는 ASCII를 Char로 저장하면 공간을 낭비하게 된다. Integers : 부호가 없는 경우 u, 부호가 있는 경우 i이며 비트에 따라 뒤의 숫자가 달라진다. u8,i8 u16, i16 u32, i32 u64, i64 u128, i128 Floats f32 f64 : f32 대비 2배의 정밀도를 갖는 타입 화성에서 무게를 재는 프로그램 $ cargo new mars_calc # mars_calc라는 프로젝트 폴더를 생성하낟. $ cd marcs_clac $ cargo run # Hello, world! 가 나오..
// main.rs fn main() { println!("Hello, world!"); } 함수의 호출은 위와 같이 작성해서, 다른 프로그래밍 언어와 다르지 않다. 앞서 ‘println!’을 따로 설명하지 않고 넘어갔는데 이는 함수가 아니라 러스트에서는 매크로라고 부르는 대상이다. 매크로는 메타 프로그래밍의 줄임말로 더 많은 코드를 작성하는 코드 작성의 한 가지 방법이라고 한다. 함수 시그니처는 이 함수가 받는 매개변수와 타입 ( = 데이터 유형 )을 반드시 명시해야 하는데, 매크로는 매번 다른 개수의 매개변수와 타입을 받을 수 있도록 작성하는 것이다. 단점은 매크로를 정의하는 게 함수보다 더 복잡하다는 점이 있지만 범용적으로 사용가능한 좋은 기능이다. fn main () { println!("Numb..
바이너리에 대한 메모리 레이아웃 fn main() { let a = 2; let result = stack_only(a); dbg!(result); } fn stack_only(b: i32) -> i32 { let c = 3; return b + c + stack_and_heap(); } fn stack_and_heap() -> i32 { let d = 5; let e = Box::new(7); return d + *e; } main : 함수의 진입점으로, 여기서부터 프로그램이 시작된다. i32 : 32비트 정수를 의미한다. Bow::new(7) : 러스트의 스마트 포인터 타입 이 코드를 해석하기 위해 일단 gdb를 설치하자. gdb는 GUI 환경에서 debugging을 도와주는 도구로, homebrew..
모던 언어 Modern languages 변수들은 기본적으로 불변입니다. 타입 추론을 합니다. 타입 세이프티를 강조합니다. 반환 유형을 가진 함수를 사용합니다. 여러 프로세스, 스레드에서 동시에 실행될 수 있는 쉬운 방법을 제공합니다. 프로세스간 통신을 위한 쉬운 방법을 제공합니다. 함수형 프로그래밍을 강조합니다. 세미콜론을 끝에 필요로 하지 않습니다. REPL을 제공합니다 (컴파일 없이 즉석에서 코드를 실행해서 바로 결과를 알 수 있는 방식) 대부분을 정적 타입으로 선언합니다. 복잡하고 장황하지 않은 깨끗하고 우아한 구문을 가지고 있습니다. 일반적으로 모던 언어라고 하면 말하는 장점들은 위와 같다. 모던 시스템 프로그래밍 언어 Rust는 런타임이나 가비지 컬렉터 없이도 엄청나게 빠르고 효율적인 메모리를..