gpt4 book ai didi

rust - 从rust中的函数返回引用值

转载 作者:行者123 更新时间:2023-12-03 11:43:41 35 4
gpt4 key购买 nike

我正在研究pdf生成应用程序。我有一个拥有所有页面的结构(文档)。每当我想添加页面时,我也想给调用者一个借来的页面值,因此文档仍然是该结构的所有者。就像在C中返回指针一样。

pub struct Document {
pages: Vec<Page>,
totalPages: i32,
_secret: ()
}


pub fn add_page(&mut self, dimension: PageDimension) -> &mut Page {
let newPage = Page::new(self.pages.len(), dimension);
self.pages.push(newPage);
newPage
}

谁能解释如何实现我想要的。

最佳答案

这可以通过 Vec::last_mut() 方法来完成。您必须解开它返回的选项,但是因为您刚刚插入了一个新元素,所以永远不要 panic 。

这是Minimal Reproducible Example。如果您想要更快/更好的答案,则应自己提供其中之一。没有一个,很难知道确切的意图。也可以查看this page以获取有关MRE的一些Rust特定建议。

pub struct PageDimension;

pub struct Page(usize, PageDimension);

impl Page {
fn new(page_number: usize, dimension: PageDimension) -> Self {
Self(page_number, dimension)
}
}

pub struct Document {
pages: Vec<Page>,
totalPages: i32,
_secret: (),
}

impl Document {
pub fn add_page(&mut self, dimension: PageDimension) -> &mut Page {
let newPage = Page::new(self.pages.len(), dimension);
self.pages.push(newPage);
self.pages.last_mut().unwrap()
}
}

(playground)

只是最后一件事。为了符合社区命名约定, totalPagesnewPage应该具有 snake_case名称,例如 total_pagesnew_page。编译器将对此发出警告。

关于rust - 从rust中的函数返回引用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59446500/

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