gpt4 book ai didi

rust - 返回带有引用的结构的 Vec 时,生命周期参数的数量错误

转载 作者:行者123 更新时间:2023-11-29 08:16:47 26 4
gpt4 key购买 nike

我有一个包含引用的结构:

pub struct ScheduledItem<'a> {
pub item: &'a item::Item,
pub timeshift: i32
}

现在我想写一个函数,它返回一个 Vec 引用这个结构:

pub fn items_with_times<'a>(items: &Vec<ScheduledItem>) -> Vec<(u32, &'a ScheduledItem)> {

但是我得到的是一个错误:

src/scheduled_item.rs:25:74: 25:87 error: wrong number of lifetime parameters: expected 1, found 0 [E0107]
src/scheduled_item.rs:25 pub fn items_with_times<'a>(items: &Vec<ScheduledItem>) -> Vec<(u32, &'a ScheduledItem)> {
^~~~~~~~~~~~~

&'a 还不够吗?这里有什么问题吗?

最佳答案

你的结构有一个通用的生命周期参数。在 Rust 中,您需要指定所有通用参数(例如,您不能返回 Vec,只能返回 Vec<T>)。所以你的返回类型应该是 Vec<(u32, ScheduledItem<'a>)>你的参数类型应该是 &[ScheduledItem<'a>] , 因为没有 &Vec<T> 的好处在 &[T]

Isn't &'a enough?

&'a T指定它是一个生命周期为 'a 的引用到 T ,这意味着它指向的对象不会比'a长寿。 .

T<'a>另一方面指定您的 T<'a> type 的生命周期不超过 'a .这反过来意味着该类型的任何对象都不会超过 'a。并且该对象不能包含对生命周期短于 'a 的对象的引用.

关于rust - 返回带有引用的结构的 Vec 时,生命周期参数的数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com