相关疑难解决方法(0)

为什么我会使用不同的功能?

通过Rust书阅读,我遇到了一个有趣的话题 - 不同的功能:

Rust有一些特殊的'分叉函数'语法,这些函数不返回:

fn diverges() -> ! {
    panic!("This function never returns!");
}
Run Code Online (Sandbox Code Playgroud)

发散功能可以用作任何类型:

let x: i32 = diverges();
let x: String = diverges();
Run Code Online (Sandbox Code Playgroud)

发散功能的用例是什么?这本书说的

panic!()导致当前执行的线程与给定的消息一起崩溃.因为此函数会导致崩溃,所以它永远不会返回,因此它具有类型!

这是有道理的,但我不能想到一个不同的功能将在哪里使用,它似乎非常本地化panic!.我知道必须有一些有用的场景,为什么他们引入了不同的功能.在Rust哪里可能会看到不同的功能?

rust

27
推荐指数
2
解决办法
2402
查看次数

为什么Rust有"Never"原始类型?

Rust的std::process::exit类型

pub fn exit(code: i32) -> !
Run Code Online (Sandbox Code Playgroud)

哪里!"从不" 原始类型.

为什么Rust需要特殊类型呢?

将其与Haskell进行比较,其类型System.Exit.exitWith

exitWith :: forall a. Int -> a
Run Code Online (Sandbox Code Playgroud)

相应的Rust签名将是

pub fn exit<T>(code: i32) -> T
Run Code Online (Sandbox Code Playgroud)

没有必要将此函数单独化为不同T的函数,因为a T从未实现,因此编译仍然可以工作.

types rust

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

关闭类型推断和生锈功能的差异

为什么可以推断闭包表达式的参数类型和返回类型而不是生锈函数?

type-inference rust

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

标签 统计

rust ×3

type-inference ×1

types ×1