小编bir*_*n93的帖子

如何将结构体 Vec 强制转换为特征对象 Vec?

尝试创建一个由HashMap向量​​组成的数据库结构。每个Vec包含Box<dyn Model>.

use std::collections::HashMap;

trait Model {
    fn id(&self) -> i32;
}

struct User;
struct Message;

impl Model for User {
    fn id(&self) -> i32 { 4 }
}

impl Model for Message {
    fn id(&self) -> i32 { 3 }
}

struct DB {
    users: Vec<Box<User>>,
    messages: Vec<Box<Message>>,
    tables: HashMap<String, Vec<Box<dyn Model>>>,
}

impl DB {
    fn new() -> Self {
        let users: Vec<Box<User>> = Vec::new();
        let messages: Vec<Box<Message>> = Vec::new();
        let mut …
Run Code Online (Sandbox Code Playgroud)

traits rust trait-objects

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

标签 统计

rust ×1

trait-objects ×1

traits ×1