小编ant*_*nyk的帖子

Rust 中是否有惯用的方法来处理“引用或创建并使用对其的引用”模式?

我意识到在 Rust 中我经常需要执行以下模式:

let variable = &some_ref;

let variable = if something {
  let new_variable = create_something();
  &new_variable
} else {
  variable
};

// Use variable here
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要使用现有引用或创建新的拥有值并使用对其的引用。但问题是,如果我像上面的例子那样做,它的new_variable寿命就不够长,它会在第一个子句的末尾被删除if

是否有一种惯用的方法可以很好地构造代码以实现“使用引用或创建新的并使用对新的引用”的方式?或者我只需要为使用variable两次的代码复制/制作函数 - 一次用于我已经有引用的分支,另一个用于我创建拥有值并使用对其的引用的分支?

overlay_with_u32这是我通常如何使用函数(在本例中)在两个分支之间复制行为的真实示例:

let source = &source;

if is_position_negative(x, y) {
  let source = crop(source, x, y);
  overlay_with_u32(destination, &source, x, y);
} else {
  overlay_with_u32(destination, source, x, y);
};
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

2
推荐指数
1
解决办法
100
查看次数

标签 统计

borrow-checker ×1

rust ×1