【发布时间】:2017-05-01 17:29:32
【问题描述】:
我正在玩 Rust 的 capnproto library。因为 Rust 在某些情况下可以推断类型,所以我可以这样做:
let mut message = ::capnp::message::Builder::new_default();
无需知道消息的类型。如果我想将message 的引用传递给函数,我现在需要知道是什么消息让函数知道会发生什么。
一般来说有没有方便的方法来做到这一点?
到目前为止,我已经完成了以下工作:
let testing: () = message;
编译器错误失败:
error[E0308]: mismatched types
--> src/main.rs:197:18
|
197 | let temp: () = message;
| ^^^^^^^ expected (), found struct `capnp::message::Builder`
但是当我输入注释时,我的函数如下:
fn example_fn(message: capnp::message::Builder) {...}
我收到如下错误:
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/main.rs:72:32
|
72 | fn dump_capnp_to_file(message: capnp::message::Builder, filename: &str) {
| ^^^^^^^^^^^^^^^^^^^^^^^ expected 1 type argument
错误:由于先前的错误而中止
我是来自 C++ 背景的 Rust 新手;对不起,如果这是一个菜鸟问题!
【问题讨论】:
-
你关心类型参数是什么吗? docs.capnproto-rust.org/capnp/message/…
-
请查看如何创建minimal reproducible example。还包括 complete 错误消息。例如,那些
^^^指向重要的东西,但我们不知道是什么。 -
来自 C++ 背景 — 您尝试传递
vector而不是vector<int>— 这有帮助吗? -
@Shepmaster ^^^s 指向 capnp::message::Builder。我是否应该假设
vector您的意思是“Builder”是一个模板并且需要进一步的输入信息? -
请edit你的问题有完整的错误信息; cmets 不提供更多信息。