本文将简要介绍 Rust 孤儿规则,为读者赋予相关的知识。 例如,假设有这样一段代码: impl Foo for u32 { fn foo(&self) { println!("Foo is u32") } } ``` 然而,假设我们有以下代码: mod b { use super::a::Bar; pub struct B {} } Rust 孤儿规则是非常重要的一项规则,它的主要作用是保证了...
当一个类型是在另一个crate中定义的(例如,来自Rust标准库的u32),你不能直接为它定义新的方法。如果你尝试这样做: implu32{fnis_even(&self) ->bool{self%2==0} } 编译器会报错: error[E0390]: cannot define inherent `impl` for primitive types | 1 | impl u32 { | ^^^ | = help: consider...
Rust(编程语言) Rust 中孤儿规则存在的意义是什么? 比如在 Kotlin 中,给某个类型扩展方法是非常简单的,只要写 Int.square 就可以,在其他类似的语言里,也可以直接扩展一个类型,而在 Rust 中,要扩展 i32 是非常困难的一件事,要写十多行废话,还要起一个 trait 的名字(实际上根本就没用),这样做的好处是什么?
这个限制是为了“一致性”或可以称为“孤儿原则”。这个原则可以保证别人用你库的时候不会破坏你库里函数...
【Rust日报】2022-04-18 对`孤儿规则`等的重新思考 对孤儿规则等的重新思考 作者认为目前的孤儿规则是安全的,但是过于严格. 随着 Rust 的发展, 作者认为是时候需要对孤儿规则进行一定的弱化,并且提出了自己的一些想法. 原文链接: http://smallcultfollowing.com/babysteps/blog/2022/04/17/coherence-and-crate-...
您可以在参考中找到完整的孤立规则:给定impl<P1..=Pn> Trait<T1..=Tn> for T0,仅当至少满足以下...
经过一点思考,很明显为什么这是不允许的。虽然pub(crate)使得外部crate不能实现MyLocalTrait,但这并不...
经过一点思考,很明显为什么这是不允许的。虽然pub(crate)使得外部crate不能实现MyLocalTrait,但这并不...
孤儿原则已经修正了,见rfc 2451
你的问题跟 trait 的孤儿规则没有关系。你就是觉得扩展方法要多写行麻烦。但考虑到语法的完整性,一致...