相关疑难解决方法(0)

什么是C++上下文的单态化?

Dave Herman最近在Rust 的演讲中说他们从C++借用了这个属性.我无法找到有关该主题的任何内容.有人可以解释一下单态意味着什么吗?

c++ rust

59
推荐指数
4
解决办法
8437
查看次数

如何从特征对象获取对具体类型的引用?

如何获得Box<B>&B&Box<B>a在此代码变量:

trait A {}

struct B;
impl A for B {}

fn main() {
    let mut a: Box<dyn A> = Box::new(B);
    let b = a as Box<B>;
}
Run Code Online (Sandbox Code Playgroud)

此代码返回错误:

error[E0605]: non-primitive cast: `std::boxed::Box<dyn A>` as `std::boxed::Box<B>`
 --> src/main.rs:8:13
  |
8 |     let b = a as Box<B>;
  |             ^^^^^^^^^^^
  |
  = note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
Run Code Online (Sandbox Code Playgroud)

traits rust

38
推荐指数
2
解决办法
9184
查看次数

如何在 Any 和 Send Traits 上实现 Sized、Serialize/Deserialize 函数?

在具有复杂数据类型(如Arc指针Mutex锁)的结构上实现序列化/反序列化和大小调整功能时遇到问题。首先,我使用本主题解决了这些ArcMutex序列化/反序列化问题:

如何在 Serde 中序列化或反序列化 Arc<T>?

但是现在,我被困在实现ser/desr和调整AnySend特征的大小上,我既没有想法也没有编译示例来解决这个问题。

代码在这里:

#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_json;

use serde::Serialize;
use std::sync::Mutex;
use std::sync::Arc;
use std::any::Any;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Message {
    pub id: u64,
    pub data: Arc<Mutex<Any + Send>>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Data {
    pub name: String,
}

impl Data {
    fn new(name_parameter: String) -> Data {
        let …
Run Code Online (Sandbox Code Playgroud)

rust serde

6
推荐指数
1
解决办法
1018
查看次数

使用 serde 解/序列化 yaml 或 json 时如何解构枚举?

我有一段serde代码可以实现我想要的功能,但我不喜欢它的实现方式。我正在寻求帮助以了解如何改进它。

\n

操场

\n
use std::any::Any;\n\ntrait Model: std::fmt::Debug + Any {\n    fn as_any(&self) -> &dyn Any;\n}\n\nimpl Model for Generator {\n    fn as_any(&self) -> &dyn Any {\n        self\n    }\n}\nimpl Model for Connector {\n    fn as_any(&self) -> &dyn Any {\n        self\n    }\n}\n\n#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]\npub struct Generator {\n    id: String,\n    #[serde(rename = "sourceID")]\n    source_id: String,\n}\n\n#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]\npub struct Connector {\n    id: String,\n    #[serde(rename = "sourceID")]\n    source_id: String,\n}\n\n#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]\n#[serde(tag = "type")]\nenum AllModels {\n    Generator(Generator),\n    Connector(Connector),\n}\n\nfn main() {\n    let …
Run Code Online (Sandbox Code Playgroud)

serialization yaml rust deserialization serde

1
推荐指数
1
解决办法
1692
查看次数

标签 统计

rust ×4

serde ×2

c++ ×1

deserialization ×1

serialization ×1

traits ×1

yaml ×1