相关疑难解决方法(0)

如果我想将环境变量的默认值传递给“unwrap_or”,为什么我需要传递“String”而不是“&str”?

我正在尝试解析环境值;使用std::env如下

let environment = env::var("APP_ENV").unwrap();
Run Code Online (Sandbox Code Playgroud)

这将向变量返回一个字符串environment。如果我想传递默认值,那么我必须使用下面的代码

let environment = env::var("APP_ENV").unwrap_or("development".into());
Run Code Online (Sandbox Code Playgroud)

但我期待这样做

let environment = env::var("APP_ENV").unwrap_or("development");
Run Code Online (Sandbox Code Playgroud)

正如 Rust示例中提到的

但随后显示错误String expected but found &str

为什么示例代码中没有发生该错误?

rust

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

错误 [E0716]:借用时临时值下降(生锈)

tl;drerror[E0716]: temporary value dropped while borrowed是一个困难且常见的问题,有一致的解决方案吗?


我遇到了困难的 rustc 错误

error[E0716]: temporary value dropped while borrowed
...

creates a temporary which is freed while still in use
Run Code Online (Sandbox Code Playgroud)

搜索Stackoverflow,有很多关于这个rust error的问题error[E0716]也许 Rust 专家可以为这个常见的新手问题提供一个通用的解决方案,一个足够好的解决方案,它也可以回答链接的问题(见下文)。

示例代码

一个简洁的代码示例来演示该问题(Rust Playground):

type Vec1<'a> = Vec::<&'a String>;

fn fun1(s1: &String, v1: &mut Vec1) {
    v1.insert(0, &s1.clone());
}

fn main() {
    let mut vec1 = Vec::new();
    let str1 = String::new();
    fun1(&str1, &mut vec1);
}
Run Code Online (Sandbox Code Playgroud)

结果:

error[E0716]: temporary value dropped while borrowed
 --> …
Run Code Online (Sandbox Code Playgroud)

rust

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

在Rust中可变借用文字的语义是什么?

我发现这可以编译:

let x = &mut 10;
*x = 20;
Run Code Online (Sandbox Code Playgroud)

这非常令人困惑。可变借用文字的语义是什么?

我来自C ++,在编译器中绝对不允许我这样引用右值:

let x = &mut 10;
*x = 20;
Run Code Online (Sandbox Code Playgroud)

literals rust semantics borrowing

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

Rust 中的 &amp;4 等字面引用的所有者是什么?

通常,特定值只有一个所有者(除了 之类的Rc<T>)。4那么,由于变量myVar是从某个东西借来的,那么下面这个值的所有者是谁呢?我想知道那是什么东西。

let myVar = &4;
Run Code Online (Sandbox Code Playgroud)

pointers reference rust

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

标签 统计

rust ×4

borrowing ×1

literals ×1

pointers ×1

reference ×1

semantics ×1