Hi Stewart,

I agree that it can sometimes be cumbersome to construct values in
capnproto-rust. Two things that we could work on to improve this situation
are:

   1. For the case when your values are constants, we could implement
support for pointer-field constants, allowing you to "construct" the values
in schema files. https://capnproto.org/language.html#constants
   2. We could use macros, as in https://github.com/bfops/capnpc-macros
(Note that I haven't actually tried out this particular project, but the
approach seems promising.)

Responses to your specific code issues are inline below.


On Fri, Sep 16, 2016 at 5:55 PM, stewart mackenzie <setor...@gmail.com>
wrote:
>
> the code:
>
> let mut ip = out_ip.init_root::<list_list_list_text::Builder>();
> for file in mock_commands {
>     let mut line_count: u32 = 0;
>     let mut list_0 = ip.init_list(file.len() as u32);
>

If I change this line to

            let mut list_0 = ip.borrow().init_list(file.len() as u32);

then your example typechecks.


> How does one add
>
> #[derive(Copy, Clone)]
>
> to contract_capnp::list_list_list_text::Builder<'_'> ?
>
>
You can't without sacrificing memory safety. You should think of a Builder
as a mutable reference, and mutable references in Rust cannot be copied, as
that would allow aliasing. I wrote a blog post about this:
https://dwrensha.github.io/capnproto-rust/2014/12/27/custom-mutable-references.html



- David

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.

Reply via email to