小编Aqr*_*run的帖子

如何获取选项的值或在它为空时设置它?

我想获取它name是否为空或设置新值。我怎样才能做到这一点?

#[derive(Debug)]
struct App {
    name: Option<String>,
    age: i32,
}

impl App {
    fn get_name<'a>(&'a mut self) -> &'a Option<String> {
        match self.name {
            Some(_) => &self.name,
            None => {
                self.name = Some(String::from("234"));
                &self.name
            }
        }
    }
}

fn main() {
    let mut app = App {
        name: None,
        age: 10,
    };

    println!("{:?} and name is {}", &app, &app.get_name().unwrap())
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

#[derive(Debug)]
struct App {
    name: Option<String>,
    age: i32,
}

impl App {
    fn get_name<'a>(&'a mut self) -> …
Run Code Online (Sandbox Code Playgroud)

rust

10
推荐指数
1
解决办法
6103
查看次数

如何在成员方法闭包中使用struct self

如何在闭包中调用方法?get_access_token方法可以基于以下内容设置新的访问令牌self.get_base_url()

fn fetch_access_token(_base_url: &String) -> String {
    String::new()
}

fn get_env_url() -> String {
    String::new()
}

pub struct App {
    pub base_url: Option<String>,
    pub access_token: Option<String>,
}

impl App {
    pub fn new() -> App {
        App {
            base_url: None,
            access_token: None,
        }
    }
    pub fn get_base_url(&mut self) -> &String {
        self.base_url.get_or_insert_with(|| get_env_url())
    }
    pub fn get_access_token(&mut self) -> &String {
        self.access_token
            .get_or_insert_with(|| fetch_access_token(self.get_base_url()))
    }
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)

错误:

锈2015

fn fetch_access_token(_base_url: &String) -> String …
Run Code Online (Sandbox Code Playgroud)

closures mutability rust borrow-checker

8
推荐指数
1
解决办法
3643
查看次数

标签 统计

rust ×2

borrow-checker ×1

closures ×1

mutability ×1