Closed2
Rust でコンパイル時にアセットファイルを含めたい
画像ファイルやJSONファイルなどをプロジェクトに含めておいて、実行時にそれを読み込みたいことがある。
そういうときは include_bytes!
マクロを使うといいらしい。
このマクロを使うと、引数に渡したパスのファイルをバイト配列としてコンパイル時に実行ファイル内に保持してくれるようになる。
今回は JSON ファイルを持っておきたかったので以下のようになった。
main.rs
use serde::{Deserialize, Serialize};
use serde_json;
const JSON_BYTES: &'static [u8] = include_bytes!("resources/data.json");
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Person {
name: String
}
fn main() {
let person: Person = serde_json::from_slice(JSON_BYTES).unwrap();
println!("{:#?}", person);
}
プロジェクトフォルダはこんな感じになる:
├─src
│ ├─resources
│ │ └─data.json
│ └─main.rs
├─Cargo.toml
...
このスクラップは2023/11/26にクローズされました