본문 바로가기

rust10

Rust 간단한 웹서버 HttpServer 올리기 제목 그대로 간단하게 Rust로 웹서버 올리기 - hello world! 찍어보기 프로젝트 생성 $ cargo new rust-actix-api Cargo.toml 에 crate 추가 [dependencies] actix-web = "3.3.2" main.rs 수정 use actix_web::{web, App, HttpResponse, HttpServer, Responder}; async fn index() -> impl Responder { HttpResponse::Ok().body("Hello world!") } async fn get_data(web::Path(id): web::Path) -> impl Responder { let data = format!("get_data {id}"); HttpR.. 2023. 4. 19.
docker compose - rust default 컨테이너 만들기 아래 2개 파일을 만들어야 한다, 도커는 기본 설치되어있어야 함 - docker-compose.yml - Dockerfile # docker-compose.yml name: rust services: backend: build: . stdin_open: true tty: true volumes: - .:/app # 현재폴더와 컨테이너의 /app과 mount # Dockerfile FROM debian:buster-slim ENV RUSTUP_HOME=/usr/local/rustup \ CARGO_HOME=/usr/local/cargo \ PATH=/usr/local/cargo/bin:$PATH \ RUST_VERSION=1.68.2 RUN set -eux; \ apt-get update; \ apt-ge.. 2023. 4. 11.
Rust 의 await, Future, Poll 에 대해 Rust는 비동기 프로그래밍을 위해 async/await 문법을 제공합니다. async 함수는 비동기 코드 블록을 나타내며, await 키워드를 사용하여 비동기 호출을 기다리고 결과를 반환할 수 있습니다. Future는 Rust에서 비동기 작업을 표현하는 trait입니다. Future를 구현하는 타입은 작업이 완료될 때까지 실행을 일시 중지하고 결과를 제공할 수 있습니다. Future는 poll 메소드를 구현해야 합니다. 이 메소드는 작업이 아직 완료되지 않았거나 작업이 완료되었지만 결과가 아직 사용 가능하지 않은 경우 Poll::Pending을 반환하고, 작업이 완료되고 결과를 제공할 수 있는 경우 Poll::Ready를 반환합니다. 다음은 간단한 예시 코드입니다: use futures::Future;.. 2023. 3. 24.
Rust match match는 Rust에서 패턴 매칭을 수행하는 키워드입니다. 다른 언어에서는 switch와 유사한 기능을 수행합니다. 다른 언어의 switch문과 비교하여 Rust의 match문의 가장 큰 차이점은 각 분기(branch)마다 변수나 값에 대한 패턴을 지정할 수 있다는 것입니다. 이것은 Rust에서 매우 강력한 기능으로 여겨집니다. 다음은 Rust에서 match를 사용한 예제 코드입니다. let number = 5; match number { 0 => println!("Number is zero"), 1 => println!("Number is one"), 2..=10 => println!("Number is between two and ten"), _ => println!("Number is someth.. 2023. 3. 16.
Rust 매크로 macro_rules! Rust의 macro_rules! 매크로는 코드를 생성하는 Rust 코드의 일부입니다. 이 매크로를 사용하면 사용자 지정 매크로를 작성하여 Rust 코드의 작성과 유지 관리를 단순화할 수 있습니다. macro_rules! 매크로는 Rust 코드에서 기호 또는 패턴을 식별하고 이러한 패턴에 대해 매크로를 적용하는 방법을 지정합니다. 예를 들어, 이 매크로를 사용하여 새로운 함수를 생성할 수 있습니다. macro_rules! make_a_function { ($func_name: ident) => ( fn $func_name() { println!("Hello from {} function!", stringify!($func_name)); } ) } make_a_function!(my_function); f.. 2023. 3. 15.
Rust trait - 인터페이스?, 추상클래스? Rust에서 Trait은 다른 언어에서 인터페이스나 추상 클래스와 비슷한 역할을 합니다. Trait은 메서드와 관련된 동작을 정의하며, 구조체, 열거형, 또는 다른 Trait 등과 함께 사용될 수 있습니다. Trait을 사용하여 코드를 더 모듈화하고, 코드 재사용성을 높이고, 다형성을 제공할 수 있습니다. 다음은 간단한 예제입니다. 이 예제에서는 Trait을 사용하여 구조체가 지정된 Trait에 해당하는 메서드를 구현할 수 있도록합니다. trait Animal { fn name(&self) -> &'static str; fn make_sound(&self); } struct Dog { name: &'static str, } struct Cat { name: &'static str, } impl Anima.. 2023. 3. 14.