rust
-
[rust] tokio 비동기 동시 처리 기본 예시 코드Rust 2024. 11. 24. 18:06
tokio를 통한 async 작업을 동시 실행. dotnet의 Task.WaitAll() 과 유사입력받은 초(sec)만큼 시간이 출력되는 작업 print_now를 각각 f1, f2 작업을 만들어 동시 실행 처리. tokio::join으로 들어온 작업 중 가장 늦게 끝난 작업 기준으로 종료 [main.rs]use tokio;use time::{OffsetDateTime}; // 포맷팅된 시간 글자를 표기하기위한 라이브러리#[tokio::main]async fn main() { let f1 = print_now(1, 5); let f2 = print_now(2, 10); tokio::join!(f1, f2); // f1, f2}// 1초당 현재시간(UTC) 표기async fn print_no..
-
[rust] tokio, bb8, tokio_postgres DB 연결 예시 코드Rust 2024. 11. 24. 17:11
tokio 와 bb8을 이용한 postgres db 연결 기본 예시 코드 [main.rs]use bb8;use bb8::Pool;use bb8_postgres::PostgresConnectionManager;use tokio_postgres::NoTls;#[tokio::main]async fn main() { println!("Hello, world!"); let manager = PostgresConnectionManager::new_from_stringlike("postgresql://{계정}:{암호}@localhost:5432/{db명}", NoTls).unwrap(); let pool = Pool::builder().build(manager).await.unwrap()..
-
[rust] 규칙에 맞는 프로젝트 템플릿을 통해 새로운 rust 프로젝트 생성을 돕는 cargo-generateRust 2024. 11. 10. 10:31
cargo new 명령을 통한 프로젝트 생성은 실행프로그램을 생성하는 --bin 과 라이브러리 생성인 --lib 두가지이다. 그 후 webapi 이든 ui 프로그램이든 생성하고자 하는 프로그램 유형에 따라 crate 를 일일히 추가해줘야 한다.매번 생성하는게 귀찮다면 cargo-generate 를 설치해 보는 것을 추천한다.cargo binstall cargo-generate설치 후 아래와 같이 사용하면 된다. 아래 예시는 rust + axum + utoipa 조합으로 webapi 개발을 위해 직접 생성한 webapi 브랜치이다.cargo generate --git https://github.com/ddochea0314/template-axum-webapi생성하면 입력한 프로젝트명에 따라 README.m..
-
[rust] axum 과 utoipa 로 swagger를 지원하는 web api 구현 예제Rust 2024. 9. 18. 14:18
Axum은 Rust 언어를 위한 웹 애플리케이션 프레임워크로 사실상 표준 비동기 프로그래밍 라이브러리로 받아들여지는 Tokio를 만든 Tokio-rs 에서 개발하였다. Rust 생태계의 대표 웹 프레임워크인 Rocket 과 Actix 에 비해 비교적 최근에 릴리즈 되었다. 그래서인지 utoipa 를 통한 swagger 적용이 원할하지 않았다. 몇 시간의 삽질 끝에 예제가 될만한 구현작업을 완료할 수 있었다. 아래 리포지토리는 axum에서 swagger ui 가 동작할 수 있도록 예시형식으로 구현한 브랜치이다. ddochea0314/template-axum-webapi (github.com) GitHub - ddochea0314/template-axum-webapiContribute to ddochea0..