现在我使用的是如下的铁 rust 代码片段:
let stackoverflow = format!("{}{}{}","\\social[stackoverflow]{",request.cv_main.stackoverflow.as_deref().unwrap_or_default(),"}\n");
下面是定义的请求cv_main:
use serde::{Deserialize, Serialize};
use super::{edu::edu::CvEduResp, work::cv_work_resp::CvWorkResp};
#[derive(Serialize, Deserialize, Default, Clone)]
pub struct CvMainResp {
pub id: i64,
pub cv_name: String,
pub created_time: i64,
pub updated_time: i64,
pub user_id: i64,
pub cv_status: i32,
pub template_id: i64,
pub employee_name: Option<String>,
pub birthday: Option<String>,
pub phone: Option<String>,
pub email: Option<String>,
pub stackoverflow: Option<String>,
pub github: Option<String>,
pub blog: Option<String>,
pub edu: Option<Vec<CvEduResp>>,
pub work: Option<Vec<CvWorkResp>>,
}
这段代码运行得很好,但我还是不明白为什么这里需要用as_deref()
.我看了https://www.fpcomplete.com/blog/rust-asref-asderef/篇文章,还是想不通.有什么简单的解释可以解释as_ref和as_deref的区别吗?