Closed3
「bincode - Rust」をGPTを使って要約した。
「bincode - Rust」をGPTを使って要約しました。
入力
入力
## 【目的】
提示する情報を要約してください。
## 【回答時のルール】
- 不明点は「分からない」と明記してください。
- 事実情報には必ず出典(URLや「情報より」など)を明記してください。
- 事実と推測・仮説は明確に区別してください。
- 初学者にもわかりやすいよう、なるべく箇条書きで簡潔にまとめてください。
## 【対象URL】
https://docs.rs/bincode/latest/bincode/
出力
以下は、Rustのバイナリシリアライズライブラリ「bincode」の公式ドキュメント(バージョン2.0.1)からの要約です。(Docs.rs)
🔑 概要
- bincode は、Rustのオブジェクトを迅速かつコンパクトにバイナリ形式でシリアライズ・デシリアライズするためのクレートです。
- バージョン2.0以降、
serde
はオプションの依存関係となり、必要に応じて有効化できます。
🧰 主な機能と使用方法
✅ 基本的なシリアライズ・デシリアライズ
-
シリアライズ:
-
encode_to_vec
:Vec<u8>
にエンコード -
encode_into_slice
:指定したスライスにエンコード -
encode_into_writer
:任意のWrite
実装にエンコード
-
-
デシリアライズ:
config
モジュール)
⚙️ 設定(-
エンコーディングの設定をカスタマイズできます。
-
主な設定項目:
serde
統合(オプション)
🧩 -
serde
を使用する場合、serde
フィーチャーを有効化する必要があります。 -
serde
とbincode
の統合には注意点があり、以下の属性は使用しないことが推奨されています:#[serde(flatten)]
#[serde(skip)]
#[serde(skip_serializing)]
#[serde(skip_deserializing)]
#[serde(skip_serializing_if = "path")]
#[serde(tag = "...")]
#[serde(untagged)]
-
これらの属性を使用すると、データの損失が発生する可能性があります。 (Docs.rs)
🧪 使用例
use bincode::{encode_to_vec, decode_from_slice, config};
#[derive(Encode, Decode, PartialEq, Debug)]
struct Entity {
x: f32,
y: f32,
}
#[derive(Encode, Decode, PartialEq, Debug)]
struct World(Vec<Entity>);
fn main() {
let config = config::standard();
let world = World(vec![
Entity { x: 0.0, y: 4.0 },
Entity { x: 10.0, y: 20.5 },
]);
// エンコード
let encoded: Vec<u8> = encode_to_vec(&world, config).unwrap();
// デコード
let (decoded, len): (World, usize) = decode_from_slice(&encoded[..], config).unwrap();
assert_eq!(world, decoded);
assert_eq!(len, encoded.len()); // すべてのバイトを読み取ったことを確認
}
⚠️ 注意点
-
バージョン互換性:
-
bincode
バージョン1と2は、同じ設定を使用すれば互換性があります。
-
-
serde
の使用:
🔗 参考リンク
このスクラップは1ヶ月前にクローズされました