Rust拥有所有权和借贷的概念.如果函数没有将其参数作为引用借用,则该函数的参数将被移动,并且一旦超出范围将被释放.
采取这个功能:
fn build_user(email: String, username: String) -> User {
User {
email: email,
username: username,
}
}
Run Code Online (Sandbox Code Playgroud)
此功能可以称为:
let email = String::from("foo@example.com");
let username = String::from("username");
let user = build_user(email, username);
Run Code Online (Sandbox Code Playgroud)
由于email与username已被移动,他们不能再被使用之后build_user被调用.
这可以通过使API使用借来的引用来修复.
考虑到这一点,在设计API时,哪些场景总是倾向于不使用借用?