相关疑难解决方法(0)

在什么情况下,不借用的API更受欢迎?

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时,哪些场景总是倾向于不使用借用?

api-design reference move-semantics rust borrowing

9
推荐指数
1
解决办法
411
查看次数

在 Rust 中处理传递参数时的经验法则是什么?

我读了几篇文章,对我来说仍然不清楚。只要编译器不显示任何错误,它看起来T并且&T可以互换。但是在我阅读了官方文档后,我想通过引用传递所有内容以利用借用。

你能否提供关于传递一个ARG作为任何简单的规则T对&T当T是一个对象/字符串?例如,在 C++ 中有 3 个选项:

  • T – 复制值,不能改变当前值
  • &T – 不创建副本,可以改变当前值
  • const &T – 不创建副本,不能改变当前值

例如,T如果我想在 T 在我的子函数(我要传递T给的函数)中超出范围后解除分配,那么传递它是个好主意吗?并使用&T如果我想在只读模式下使用我的子函数,然后继续在我当前的(父)函数中使用它。

谢谢!

rust

3
推荐指数
1
解决办法
489
查看次数

标签 统计

rust ×2

api-design ×1

borrowing ×1

move-semantics ×1

reference ×1