Greetings,

I'd like to initialize a list of list of list of texts

The Capnproto contract:

  @0xf3fc3585f75860e4;

  struct ListListListText {
          texts @0 :List(List(List(Text)));
  }

The data structure I want to insert into the contract:

let mock_commands =
vec![ // a file
    vec![ // lines
        vec![ // pipe symbol contents | |
            vec!["ls1","-l","-a"], // command + args
            vec!["ls1","-l","-a"],
        ],
        vec![
            vec!["ls1","-l","-a"],
            vec!["ls1","-l","-a"],
        ],
    ],
    vec![
        vec![
            vec!["ls1","-l","-a"],
            vec!["ls1","-l","-a"],
        ],
        vec![
            vec!["ls1","-l","-a"],
            vec!["ls1","-l","-a"],
        ],
    ],
];

The insertion fails:

let ip = out_ip.init_root::<list_list_list_text::Builder>();
let mut lines_count: u32 = 0;
for lines in &mock_commands {
    let mut line_count: u32 = 0;
    let ip_lines = ip.init_texts(lines.len() as u32);
    for line in lines {
        let mut pipe_section_count: u32 = 0;
        let ip_line = ip_lines.borrow().set(line_count, 
ip_lines.init_texts(lines.len() as u32));
        for pipe_section in line {
            //let ip_pipe_section = ip_line.init_texts(pipe_section.len() 
as u32);
            for argument in pipe_section {
                //println!("{:?}", argument );
            }
            pipe_section_count += 1;
        }
        line_count += 1;
    }
    lines_count += 1;
}

with:
src/lib.rs:62:53: 62:56 error: no method named `set` found for type 
`capnp::list_list::Builder<'_, 
capnp::list_list::Owned<capnp::text_list::Owned>>` in the current scope
src/lib.rs:62                     let ip_line = 
ip_lines.borrow().set(line_count, ip_lines.init_texts(lines.len() as u32));
                                                                  ^~~
src/lib.rs:14:1: 125:2 note: in this expansion of component! (defined in 
<rustfbp macros>)
src/lib.rs:62:78: 62:88 error: no method named `init_texts` found for type 
`capnp::list_list::Builder<'_, 
capnp::list_list::Owned<capnp::text_list::Owned>>` in the current scope
src/lib.rs:62                     let ip_line = 
ip_lines.borrow().set(line_count, ip_lines.init_texts(lines.len() as u32));
                     
Now I've seen other examples (in python?) whereby people use something like 
this:

proto.myList = [[1], [2,3], [4,5,6]] # to insert a list of lists

In Rust, how do I quickly and succinctly create a list of list of list of 
texts?

/sjm

-- 
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