hiro99ma blog

rust: serde-yamlはdeprecated

2025/10/18

Rust のコードを書いていて、何でもよいから設定ファイルが作りたくなった。
JSON はありきたりだし、ここは Rust だから YAML かなと考えた(TOML と勘違いしたらしい)。

検索で “rust yaml” を探すと serde_yaml の用例が出てきた。
書いてあるとおりに cargo add して、書いてあるとおりにやると動いた。

めでたしめでたしだったのだが、Carto.toml を見ると serde_yaml 0.9.34-deprecated となっている。
今から使うのに deprecated のライブラリをわざわざ使うことも無いよなあ。。。
後継のライブラリはいろいろ候補があるようなのだが、全然勘所が無いので困ったものだ。

では TOML で

YAML に思い入れがあるわけでもないので、別のフォーマットにしよう。
Cargo.toml があるくらいだし TOML なら標準でサポートしているだろうと思った。

serde と互換性があるらしい。
“serde_yaml” を remove し(serde は既にあった)、あとはちょっと書き換えるだけで動いた。
YAML のときに参照したサイトでは BufReader を使って serde_yaml::from_reader() とやっていたのだが、 メソッドがなかったので全部読み込んで toml::from_str() に与えた。

use serde::Deserialize;
use toml;

......

#[derive(Deserialize, Debug)]
pub struct BitcoinRpc {
    pub user: String,
    pub password: String,
    pub server: String,
}

impl BitcoinRpc {
    pub fn new() -> Result<BitcoinRpc> {
        let mut settings = String::new();
        let mut f = File::open(FILENAME)?;
        f.read_to_string(&mut settings)?;
        let data: BitcoinRpc = toml::from_str(&settings)?;
        Ok(data)
    }

......

writer: hiro99ma
tags: Rust言語


 <🏠 Top page
コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage

About me