Rust/기타 팁 (8) 썸네일형 리스트형 C++ 참조자 처럼 사용하기(?) [1. 개요]C++ 참조자와 비슷한 개념이 rust 에도 있다고 생각하는데, C++ 참조자와 같은 패턴을 rust 에서도 사용하려니, 잘 안되서 정리해본다.[2. 간단한 예제]fn main() { let mut myarray: [u32; 4] = [0; 4]; println!("{:?}", myarray); myarray[0] = 1; // 직접 접근하여 값을 수정. println!("{:?}", myarray); let rv = &myarray[0]; // 0번째 원소의 참조자, 읽기만 가능함. println!("{:?} {:?}", rv, *rv); let rv = &mut myarray[1]; // 1번째 원소의 mutable 참조자. // rv = 2; .. encoding, decoding 관련 crate [1. 개요] [2. 예제] [3. 참조] https://crates.io/crates/encoding_rs https://docs.rs/encoding_rs/latest/encoding_rs/ std::process::Command 관련 [1. 개요] rust 에서 윈도우/리눅스 명령어를 사용하고, 그 결과 등을 캡쳐 할 필요가 있을 때 std::process::Command 를 사용하여 원하는 작업을 할 수 있다. 여기서는 ssh2 에서 처럼 작업을 수행하고, 블로킹 되는 것 없이, 현재 진행 중인 작업 중인 로그를 출력하고, 자식 프로세스의 Exit code 를 받아오도록 한다. [2. 예제] [3. 참조] https://doc.rust-lang.org/std/process/struct.Command.html ssh2 관련 [1. 개요] rust 에서 ssh 라이브러리 사용 시, 필요 했던 점 정리한다. 필요한 기능 ssh 로 원격 작업 수행 블로킹 되는 것 없이, 실행 로그를 실시간 출력 원격 작업 종료 후, Exit code 를 받는 것 까지 [2. 예제] [3. 참조] https://crates.io/crates/ssh2 https://docs.rs/ssh2/latest/ssh2/ Rust. 프로젝트 구조 [1. 개요] Rust 로 application 작성 시, 규모가 커질 경우 당연하게도 소스 코드를 모듈 별로 분리할 필요가 있다. 여기서는 소스코드로 분리하는 방법을 정리한다. [2. 개념] cargo 를 이용하여 두가지 형태의 프로젝트를 생성 할 수 있다. executable library executable 형태에서는 main.rs 가 진입점이고, library 형태에서는 lib.rs 가 진입점이다. main.rs 를 기준으로 같은 디렉터리에 있는 소스코드의 경우, 파일 이름명이 바로 module 이 된다. main.rs 를 기준으로 하위 디렉터리에 있는 소스코드 중 mod.rs 는 해당 디렉터리의 상위 모듈이 되고, 그 디렉터리내 소스코드의 파일명이 하위 모듈이 된다. main.rs 에서는 키워드.. Rust. 알고리즘 문제 풀이 기본 코드 구조 [1. 개요] 알고리즘 문제 풀이 시, Rust 로 작성 하는 경우, 기본 골격이 되는 코드 구조 정리 [2. 예시-01] 한줄의 입력에서 세개의 숫자를 읽고 그 숫자들의 합을 출력하는 문제 [3. 예시-02] 2줄에서 2개의 숫자를 읽고, 그 합을 출력 [3. 예시-03] EOF 를 만날 때 까지, 입력 스트림으로 부터 데이터 읽어들이고 출력 Rust 전역 변수 참조 https://testkernelv2.tistory.com/299 Rust io 성능에 대한 고찰 [1. 개요] 알고리즘 문제 풀이 시, 간혹 각 언어 별 I/O 성능을 향상해야만 풀리는 문제가 간혹 있다. C/C++ 에서는 보통 scanf(), printf() 를 사용하면 되고, Go 에서는 bufio 패키지를 사용한다. 여기서는 위와 같이 Rust 코드 작성 시 입출력 성능 향상을 위한 방법을 정리한다. [2. println! 매크로] println!() output stream lock으로 인해 다소 느리다. 그래서 아래와 같은 방법이 있다고 한다. 표준 출력에 대해 미리 lock 을 걸어두고 출력하거나, String 을 먼저 만든 뒤, print!() 를 통해 한번에 출력하는 방식 [3. 방법] 표준 입력에 대한 언급은 따로 없고, 가급적 Go 와 비슷한 패턴으로 코드를 작성하고자 아래와 같은.. 이전 1 다음