2024. 1. 29.

Installing Diesel CLI mysqlclient error

error: could not find native static library `mysqlclient`, perhaps an -L flag is missing?

error: could not compile `mysqlclient-sys` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `diesel_cli v2.1.1`, intermediate artifacts can be found at `C:\Users\MyName\AppData\Local\Temp\cargo-installM3kDXH`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Diesel 'Getting Started' 문서 'Installing Diesel CLI' 부분에서

cargo install diesel_cli

명령어 실행시 만날 수 있는 메세지. 아래에 해결방법을 적어두었지만 불친절한 부분이 있다.
해결책은 MySQL C API를 설치해야 한다.
https://downloads.mysql.com/archives/c-c/

명령어 플래그를 사용해 특정 SQL만 설치하는 법을 안내하고 있지만 MySQL 사용시에는 'MySQL C API'를 설치해야 정상적으로 설치된다.

cargo install diesel_cli --no-default-features --features mysql

출처: https://github.com/diesel-rs/diesel/issues/1608#issuecomment-691754036

2024. 1. 17.

러스트 언어 입문 시 도움받은 사이트

한국 러스트 사용자 그룹

https://doc.rust-kr.org/
https://github.com/rust-kr/doc.rust-kr.org

https://rust-kr.org/

러스트 문서의 한국어 번역을 제공하고 있어 많은 도움을 받았다.


Lib.rs

https://lib.rs/

Rust 프로그램 및 라이브러리의 카탈로그.
Rust에는 이미 공식 'crates.io'가 있지만 미묘하게 불편해서 나온 비공식 사이트.


Blessed.rs

https://blessed.rs/

러스트 생태계 가이드 문서.
러스트 레딧에서 발견한 사이트로 수많은 패키지(crates, 라이브러리) 중에서 무엇을 살펴봐야 할지 알려준 사이트.


공식 Rust

https://www.rust-lang.org/learn

, 따라하는 'rustlings', 예시로 보는 러스트 등등 문서들을 친절하게 제공하고 있다.


Rust Cookbook

https://rust-lang-nursery.github.io/rust-cookbook/
https://github.com/rust-lang-nursery/rust-cookbook

러스트 모범 예제 모음 요리책
reqwest 문서에서 발견. 사용하는 'Crates'와 예제 코드를 쉽게 적어두었다.


데이터베이스

https://github.com/diesel-rs/metrics
'diesel'에서 실시한 데이터베이스 인터페이스 벤치마크 자료

https://github.com/blackbeam/rust-mysql-simple
MySQL 공식사이트에서 소개하고 있는 커뮤니티 개발 드라이버


error: environment variable `SLINT_INCLUDE_GENERATED` not defined at compile time

GUI slint를 러스트로 사용 시 만났던 문제

예제 코드

slint::include_modules!();
fn main() {
    slint_build::compile("ui/hello.slint").unwrap();
}

에러 메세지

error: environment variable `SLINT_INCLUDE_GENERATED`
not defined at compile time

러스트 공식 문서의 예제와 달라 혼란스러운 부분이 있었는데 'Cargo.toml' 파일안 [package] 선언 부분에 build = "build.rs"를 추가해야 러스트가 빌드 스크립트를 자동 감지한다.

Note: The package.build manifest key can be used to change the name of the build script, or disable it entirely.

[dependencies]는 'cargo add slint' 명령어를 실행해서 추가하지만 [build-dependencies]는 직접 입력해서 사용해줘야 한다.

[package]
...
build = "build.rs"

[dependencies]
slint = "1.3.2"

[build-dependencies]
slint-build = "1.3.2"

build.rs 파일

fn main() {
    slint_build::compile("ui/appwindow.slint").unwrap();
}