encoding-asn1 0.1.0

asn1 crate based on pkg.go.dev/encoding/asn1
Documentation
use encoding_asn1::{common, Encoder, Marshal, Marshaler};

#[derive(Debug, Marshal)]
struct Message {
    id: i32,
    body: Body,
}

#[derive(Debug, Marshal)]
#[allow(dead_code)]
enum Body {
    #[asn1(tag = 3000)]
    Request(Request),

    #[asn1(tag = 3001)]
    Response(Response),
}

#[derive(Debug, Marshal)]
struct Request {
    num: i32,
}

#[derive(Debug, Marshal)]
struct Response {
    ret: i32,
}

fn main() {
    let m = Message {
        id: 1,
        body: Body::Request(Request { num: 1 }),
    };
    println!("{:02X?}", encoding_asn1::marshal(&m));
}