extendr / extendr.github.io

https://extendr.github.io/
MIT License
5 stars 3 forks source link

deserializing from R into a struct #21

Open JosiahParry opened 4 months ago

JosiahParry commented 4 months ago

Discovered this yesterday. Wrote an impl method like so:

For a lot of simple structs, we can deserialize from an R list object directly into that struct. This is very handy if we want to be able to accept R objects like lists instead of having to create external pointers to structs

use extendr_api::prelude::*;
use extendr_api::deserializer::from_robj;

use ast_grep_config::SerializableRule;
pub fn new_rule(pattern: Robj) -> SerializableRule {
    let r: SerializableRule = from_robj(&pattern).unwrap();
    r
}
CGMossa commented 4 months ago

I've also made another discovery: https://extendr.github.io/extendr/extendr_macros/derive.IntoRobj.html I believe it does the same thing, where each field is extracted using dollar and a conversion is performed.

This should be renamed to IntoList or IntoRList.