我有一个这样定义的枚举:
#[derive(Clone, Debug)]
pub enum JsonState {
NameReadingState(String),
StringState(String),
}
impl JsonState {
pub fn get_name_read(self) -> String {
if let JsonState::NameReadingState(name) = self {
return name;
} else {
panic!(
"Error: attempted to get name from non name state {:#?}",
self
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我要调用get_name_read的实例,则JsonState该字符串将被移出枚举还是被复制?我的理解是,由于我正在传递self而不是&self在函数内部获取实例的所有权,因此我应该能够简单地将字符串移出该函数。