gpt4 book ai didi

rust - 仅由不安全代码块组成的 Rust 函数是否有任何目的?

转载 作者:行者123 更新时间:2023-12-03 11:24:31 28 4
gpt4 key购买 nike

代码复制自Listing 19-10 of The Rust Programming Language .它旨在说明可变静态变量的使用,但这不是我关心的问题。尽管这可能被称为“玩具示例”,但在一本介绍 Rust 的书中,它提出了我认为严重的问题。add_to_count的所有代码位于 unsafe堵塞。这有什么好处,而不是让函数本身 unsafe ?照原样,函数的签名没有给出任何线索——如果不是用 Rust 的说法,本质上是不安全的。我想知道为什么编译器甚至允许这样做。 “好处”是,如下所示,该函数可以在 unsafe 之外调用。堵塞。为什么关于 Rust 的介绍性文本会展示如何规避安全的编程实践?

static mut COUNTER: u32 = 0;

fn add_to_count(inc: u32) {
unsafe {
COUNTER += inc;
}
}

fn main() {
add_to_count(3);

unsafe {
println!("COUNTER: {}", COUNTER);
}
}

最佳答案

如果一个函数被标记为 unsafe这意味着调用者负责维护一些条件,否则可能会引入未定义的行为。
如果函数未标记为 unsafe但包含不安全代码,则表示该函数保证不选择参数会导致不安全行为。在实践中,这通常意味着该函数将检查某些条件并在不满足条件时 panic 。
通过不将函数标记为 unsafe在您的示例中,作者断言通过突变 static mut u32 不会出错。通过一些调用者定义的数量。

关于rust - 仅由不安全代码块组成的 Rust 函数是否有任何目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62999967/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com