you are viewing a single comment's thread
view the rest of the comments
[–] 2 points 2 years ago (1 child)

The biggest issue is move constructors. Explanation here: https://cxx.rs/binding/cxxstring.html#restrictions

Probably seems like a little thing but I found it quite annoying in practice, and there are other things like not being able to combine serde-derive and cxx FFI on the same struct.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 2 years ago

    Sounds like you'll always have to do this little dance for any string you want to pass through, so I can definitely see how that could become quite annoying.

    For not being able to combine serde-derive and cxx FFI on the same struct, there's a simple trick that can be used for many such situations:

    struct CxxThingamabob { ... }
    
    #[derive(Serialize, Deserialize)]
    #[serde(transparent)]
    struct SerializableCxxThingamabob(CxxThingamabob);
    

    That just moves the Serde implementation to a different struct, so that you can choose which one you want by either wrapping or unwrapping it.

  • source
  • parent