相关疑难解决方法(0)

我什么时候应该实现std :: convert :: From vs std :: convert :: Into?

我看到它std::convert::Into有一个实现任何实现的东西std::convert::From:

impl<T, U> Into<U> for T where U: From<T>
Run Code Online (Sandbox Code Playgroud)

有更具体的实现From,虽然Into目前只有3个特定的实现,这使得它似乎是From默认实现的主流决定.我确信有些时候我只想实现Into而不是From,但我没有看到它们.

rust

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

如何在Rust中对"选项"分配进行分组?

我有一段代码,需要一次分配多个可选变量.任何值都很少有机会None,因此单独处理每个失败的案例并不是特别有用.

目前我写这样的支票:

if let Some(a) = foo_a() {
    if let Some(b) = foo_b() {
        if let Some(c) = foo_c() {
            if let Some(d) = foo_d() {
                // code
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果可以对作业进行分组会很方便.如果没有这个,添加一个新变量会将块缩进一级,从而产生噪声差异并导致不必要的深度缩进:

if let Some(a) = foo_a() &&
   let Some(b) = foo_b() &&
   let Some(c) = foo_c() &&
   let Some(d) = foo_d()
{
    // code
}
Run Code Online (Sandbox Code Playgroud)

有没有办法Option在一个if语句中分配多个s?


一些值得注意的细节:

失败的第一个功能应该是短路而不是呼叫其他功能.否则,可以这样写:

if let (Some(a), Some(b), Some(c), Some(d)) = (foo_a(), foo_b(), foo_c(), foo_d()) {
    // Code
}
Run Code Online (Sandbox Code Playgroud)

使用函数可以避免深度缩进,但我不想这样做,因为你可能不希望将主体放在不同的范围内...... …

variable-assignment rust

8
推荐指数
3
解决办法
332
查看次数

标签 统计

rust ×2

variable-assignment ×1