환경적 측면에서 파이썬화 시킨 c 또는 cpp 라고 볼수 있을듯? c와 다르게 cargo 라는 마치 pip같은 패키지 매니저가 존재한다. 게다가 시스템 유틸리티를 c나 cpp 수준의 성능으로 만들 수 있다. cpp 대신에 rust를 배워보자Ubuntu 16.04 or
2장에서는 예제 프로그램을 만들어보면서 rust 언어에 대한 저체 Overview를 한다. 만들어볼 프로그램은 Guessing Game : 프로그램이 랜덤으로 숫자를 생성하고 사용자가 맞추는 게임. 사용자가 숫자를 입력하면 프로그램은 맞출때까지 값이 큰지 작은지 알려준
https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.htmlhttps://rinthel.github.io/rust-lang-book-ko/ch03-01-variables-and-mutabi
Rust 는 컴파일 타임에 모든 변수의 타입이 결정되어 있어야만 하는 정적 타입(Statically Typed) 언어이다. 만약 변수 선언시 타입을 명시하지 않으면 컴파일 에러가 발생한다. 다시말하면 이 장에서 소개하는 데이터 타입은 컴파일타임에 이미 크기가 결정 되어
fn 키워드 사용함수 정이 위치가 위에 있을 필요 없음함수 정의 형태를 함수의 시그니처 라고 부르는듯.변수명 : 타입 매개 변수와 타입을 같이 명시해야함.Statement 란 어떤 값을 리턴하지 않고 수행되는 명령이다. 가령 아래 let y = 6; 은 statemen
if 조건 {}{} 블럭으로 묶이는 부분 수행조건문은 bool 타입 이어야함. 자동으로 형변환해주지 않는다. 아래와 같으면 컴파일 에러 발생. else if 는 다음과 같이 else if 조건 {} . 첫번째 참인 조건을 만나면 나머지 else if 및 else는 조건
전통적으로는 Runtime 에 할당되는 메모리(Heap)를 관리하기 위해서는 다음과 같은 방법이 있었다. 프로그래머가 직접 할당 및 해제 (C, C++)Garbage Collector 가 계속 수행되며 메모리 해제 (Java) 전자는 프로그래머가 실수로 메모리할당을
값을 참고만 하되 오너십을 갖지는 않는 방법 : & 사용&String s pointing at String s1함수 파라미터에 오너십을 넘기지 않고 값만 넘기는 것. (We call having references as function parameters borrow
소유권을 가지지 않는 또 하나의 타입이다. 먼저 만약 slice가 없을때 우리가 문자열에서 (스페이스로 구분된) 첫번째 단어를 반환하는 함수는 어떻게 만들 수 있을지 살펴보자. 일단 다음과 같이 단어 끝의 인덱스를 리턴하는 함수를 만들 수는 있다. .as_bytes()
A eng-kor dictionary for the terminal users. It is written in Rust. Github: https://github.com/jihuun/rsdicusage Using Homebrew
어떤 함수의 리턴값이 존재하거나 존재하지 않는 경우 리턴타입으로 Option<T>를 쓴다. Option<T>는 Null Pointer Dereference(널 포인터 역참조) 처럼 Null로 리턴되는 값을 Null이 아닌 값처럼 사용할때 발생할 수 있는 문제
CPU bound taskCPU operation을 많이 수행하는 task. 예를 들어 이미지의 크기 조정, 회전 등의 연산은 CPU bound task이다. IO bound taskI/O operation을 많이 수행하는 task. 예를 들어 서버나 database
Thread 실행 속도 대한 간단한 실험.
적어도 시스템 프로그램이라고 하면 커맨드라인 인자를 받아야만 뭔가 완성되는것 같다. 그래서 애초에 프로그램을 작성하기 전에 인자를 전달받는 템플릿을 미리 생성해놓은 뒤 메인로직 작성을 시작하는게 편하다. Rust에서는 어떻게 커맨드라인 인자를 받고 사용할 수 있을까?
Rust로 작성한 프로그램이 여러 환경에서 실행되도록 지원하기 위해서는 각각의 OS와 Architecture에 맞게 cross-compile이 필요하다. 여기서 해볼 작업 환경(Host)과 목표로하는 Target 환경은 아래와 같다. Host: MacBook Air(2