问题标签 [prost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 在 rust 中使用 prost 和 tonic 时如何导入 .proto?
我正在尝试使用 crates prost 和 tonic 在 rust 中构建一个简单的 gRPC 客户端。我的原型定义非常简单,但我突然坚持使用从其他原型导入的消息。
我build.rs
的很简单:
当我将 protos 包含在中时,问题就开始了main.rs
:
编译失败并出现以下错误:
这里可能有什么问题?!我将我的游乐场项目上传到github,以防它可能有用。
rust - 如何使用 serde 反序列化 Prost 枚举?
我正在使用 [prost] 从 protobuf 生成结构。其中一个结构非常简单:
这会生成如下代码:
我必须将大量 JSON 文件解析为这些消息。这些是数万行长,但是当这个字段出现时,它看起来像:
所以,简而言之,它的反序列化格式是一个字符串,序列化是i32
.
如果我只是运行它并尝试解析 JSON,我会得到:
这当然是有道理的——没有反射来引导反序列化从"up"
to 0
。
问题:如何设置serde
将这些字符串解析为匹配的整数值?我已经彻底阅读了 serde 文档,看来我可能需要为此编写一个自定义反序列化器,尽管这似乎有点过头了。
我尝试了一些不同的 serde 属性,例如:
使用此功能:
但是,尽管serde 文档告诉我,该方法甚至没有被调用(但编译成功)。
我还在字段上尝试了一个字段属性Direction
:
但这当然需要一个不同的签名,而不仅仅是&str
:the trait std::convert::From<__D> is not implemented for common::Direction
我只需要编写一个自定义反序列化器吗?似乎是一个足够常见的用例,可以使用一种模式。
注意:这是解决的相反问题serde_repr
。我没有看到让它在这里工作的方法。
rust - 如何跨多个微服务共享 .proto 消息?
我正在尝试创建一堆微服务。大多数 grpc 消息使用此消息
i18n 还实现了额外的方法来为请求上下文选择正确的键。这样
我想创建一个 Crate,它将存储在私有 GitHub 存储库中,带有 proto 和附加功能,以便我可以使用 cargo 在多个微服务之间共享 i18n 消息和逻辑。
我有没有机会使用extern_path来做到这一点?
如果不能,您能否分享您使用 prost 库的经验以及您是如何共享代码的?
rust - 如何在补品中将数据传递给 protobuf `oneof`?
如何将数据传递给toniconeof
中的 protobuf ?
我在文档中找不到任何说明或示例。
rust - Prost - 不能在 trait 对象上调用`encode` 方法
我正在尝试编写一个通用函数来使用以下代码对 prost 消息进行编码和解码。
我收到以下错误。
如何解决这个问题?
generics - 函数接受类型参数
我正在开发一个客户端服务器应用程序,在该应用程序中,我使用 rust crate prost 将消息作为协议缓冲区发送到每个协议缓冲区。目前我有一个通用send_message
函数,可以采用任何实现该prost::Message
特征的结构。我正在尝试创建一个类似的函数来读取实现prost::Message
. 我认为问题在于,decode
实现类型的方法prost::Message
是关联函数而不是实例方法。实现的对象的实际实例prost::Message
是在函数中创建的。
我想知道是否有一种方法可以制作一个通用read_message
函数,该函数可以接受任何实现prost::Message
并在该类型上使用关联函数decode
的类型。
这是我目前的send_message
功能:
现在我有两个read_TYPE_message
功能:
当我尝试以下操作时:
我得到错误
我希望能够使用这样的功能:
rust - 没有为 Type 实现 trait `std::marker::Copy`
我正在尝试在 b/w 不同的线程周围移动一些数据,但收到 ole Copy trait-not-implemented 错误。这是一些代码:
错误:
我不能(或者我可以)Copy
在结构上添加属性,Publisher
但这不起作用,因为并非所有字段都实现了Copy
. 尽管如此,我已经注释掉了Publisher
不隐含的字段Copy
并将属性添加到它只是为了查看,并且通过这种方法我得到:
Request 是protobuf
使用 prost lib 编译的基于结构的结构。我无法向其中添加Copy
属性,因为它的某些字段没有实现Copy
,例如String
and Timestamp
。
我想知道这里的设计是否天生就很糟糕,或者是否有一个简单的修复方法。
rust - Rust / Prost:如何将调试添加到结构和联合?
看起来 prost protobuf 生成器仅添加derive(Debug)
到生成的枚举类型(并且仅添加不在pub mod
块内的枚举)。生成的结构或联合都没有应用它。我怎样才能让 prost 将其添加到所有内容中?
使用 Prost 0.9 版和 rustic 1.56