![](/img/trans.png)
[英]How to return a reference to a value from Hashmap wrappered in Arc and Mutex in Rust?
[英]return a reference value from a function in rust
我正在开发 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()
方法完成。 您必须解开它返回的选项,但这不应该惊慌,因为您刚刚推入了一个新元素。
这是一个最小的可重现示例。 如果您想要更快/更好的答案,您应该自己提供其中之一。 如果没有,就很难知道究竟是什么意图。 也请查看此页面,了解针对 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()
}
}
只有最后一件事。 与社会各界的命名惯例,符合totalPages
和newPage
应该有snake_case
名字,像total_pages
和new_page
。 编译器会对此发出警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.