xml-rpc-rs
xml-rpc-rs copied to clipboard
Investigate a Zero-Copy interface
Currently, this crate forces the use of many allocations.
It should be possible to make Value use Cow internally, as well as making Request store an &'a [Value] for the arguments (note that the name of the called method is already a &'a str). This makes adding single arguments impossible, but that's not really a problem since the user can just use a Vec themselves.
One thing to note is that this will probably make Value a bit clunkier to use: Cow is hard to match on. Also, I've noticed that implementing this causes a cyclic trait dependency.
The 0copy branch tries to implement this but (as noted above) causes a compiler error that I don't know how to fix. The cause is probably https://github.com/rust-lang/rust/issues/23714