繁体   English   中英

从 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()
    }
}

(操场)

只有最后一件事。 与社会各界的命名惯例,符合totalPagesnewPage应该有snake_case名字,像total_pagesnew_page 编译器会对此发出警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM