Vector 在新的空向量上设置生存期时遇到问题

Vector 在新的空向量上设置生存期时遇到问题,vector,rust,lifetime,Vector,Rust,Lifetime,我试图在一个特定类型的新向量上设置生存期。我了解生活和借贷。这不是问题所在。问题在于将生存期设置为{ 姓名:&'a str, 性别:性别,, 教授:&'教授组的Vec默认值{ 教授组{ 名称:“未初始化组”, 性别:性别:女性, 教授:&mut-Vec>::new(),//问题代码 职级:教授职级:助理, 损耗率:0.0, 晋升率:0.0, 雇佣率:0.0, 当前_编号:0, } } } 我得到的错误是: 错误:应为“:”,找到“>` -->src/演员/教授组。rs:21:35 | 21 |

我试图在一个特定类型的新向量上设置生存期。我了解生活和借贷。这不是问题所在。问题在于将生存期设置为
{
姓名:&'a str,
性别:性别,,
教授:&'教授组的Vec默认值{
教授组{
名称:“未初始化组”,
性别:性别:女性,
教授:&mut-Vec>::new(),//问题代码
职级:教授职级:助理,
损耗率:0.0,
晋升率:0.0,
雇佣率:0.0,
当前_编号:0,
}
}
}
我得到的错误是:

错误:应为“:”,找到“>`
-->src/演员/教授组。rs:21:35
|
21 |教授:&mut-Vec>::new(),
|                                   ^
错误[E0063]:在'Actors::ProfessorGroups::ProfessorGroupVec::>::new(),
的初始值设定项中缺少字段'attrition\u rate'、'current\u number'、'rent\u rate'和其他3个字段,但这只是给了我一个错误,即向量的寿命不够长

我查阅了文档,但最接近我发现的是这样的东西,它也不起作用:


有人能看到我在语法中犯了什么错误吗?

如果减少,你会得到类似的结果

struct Professor<'a>(&'a u8);

pub struct ProfessorGroup<'a> {
    professors: &'a Vec<Professor<'a>>,
}

impl<'a> Default for ProfessorGroup<'a> {
    fn default() -> ProfessorGroup<'a> {
        ProfessorGroup {
            professors: &mut Vec<'a>::<Professor<'a>>::new(), 
        }
    }
}
你,没有例外。生命周期阻止了这一点


您还应该查看如何创建一个。在这种情况下,为什么有8个与问题无关的字段?你为什么不分享你所包含的所有类型的定义呢?当试图理解任何编程问题时,减少它,直到只剩下问题为止

为什么
professors
指的是
Vec
,而不仅仅是一个普通的(拥有的)
Vec
?你真的希望所有权是外部的吗?啊,很好。我想我只是混淆了&自我和向量的包含。是的,有道理。我会试试的。但是你知道如何给向量加上一个生存期吗?我在文档中到处找了找,但找不到。你做不到。生存期描述了您要求编译器验证的代码约束,您不能强制使用生存期;您不能在
default
内创建
Vec
,并将其引用转义到方法中好的,我明白了。我在书中没有看到这一点。谢谢你的建议@Paolofalabellah,谢谢你在这里的指导。是的,我将确保在将来缩短我的代码示例。我真的很感激你详尽的回答。他们真的帮了大忙。对于像我这样的新手来说,学习一门语言最大的问题是编写良好代码的好例子。因此,我想我会再看一些过去关于生锈问题的答案,以找到好的例子。希望这能提高我对生命和借阅等的理解:)。
struct Professor<'a>(&'a u8);

pub struct ProfessorGroup<'a> {
    professors: &'a Vec<Professor<'a>>,
}

impl<'a> Default for ProfessorGroup<'a> {
    fn default() -> ProfessorGroup<'a> {
        ProfessorGroup {
            professors: &mut Vec<'a>::<Professor<'a>>::new(), 
        }
    }
}
professors: &mut Vec<'a>::<Professor<'a>>::new()
//          ^^^^