1 stable release

1.0.1 Nov 9, 2023

#960 in Encoding

Download history 4/week @ 2024-02-16 19/week @ 2024-02-23 7/week @ 2024-03-01 156/week @ 2024-03-08 12/week @ 2024-03-15

176 downloads per month

MIT license

4KB

serde_cast

Works nicely with you_can!

  1. Have structs A and B
  2. Make sure they derive Serialize and Deserialize respectively
  3. Cast!
use serde::{Serialize, Deserialize};
use serde_cast::serde_cast;

#[derive(Serialize)]
struct A {
    field: String,
}

#[derive(Deserialize)]
struct B {
    field: String,
}

let a = A { field: "This was a mistake".to_string() };
let b: B = serde_cast!(&a);

assert_eq!(a.field, b.field);

lib.rs:

Cast one struct into another

use serde::{Serialize, Deserialize};
use serde_cast::serde_cast;

#[derive(Serialize)]
struct A {
    field: String,
}

#[derive(Deserialize)]
struct B {
    field: String,
}

let a = A { field: "This was a mistake".to_string() };
let b: B = serde_cast!(&a);

assert_eq!(a.field, b.field);

Dependencies

~1–1.6MB
~38K SLoC