- rust/
- Rust 锈病特征。在依赖项库中定义它们是一种习惯,还是可以在使用它们的二进制代码中向类型添加特征?
Rust 锈病特征。在依赖项库中定义它们是一种习惯,还是可以在使用它们的二进制代码中向类型添加特征?
Rust 锈病特征。在依赖项库中定义它们是一种习惯,还是可以在使用它们的二进制代码中向类型添加特征?,rust,dependencies,traits,toml,Rust,Dependencies,Traits,Toml,我一直在遵循一个使用自定义类型的Rust教程。
因此定义了一个库,该库稍后通过cargo.toml依赖项在rust二进制文件中使用。
最后我提出了几个问题:
是否生锈:
必须在二进制文件中使用的cargo.toml依赖项(main.rs的)引用的库代码(下面是money_typesafe)中定义提供这些功能的特性
允许在使用二进制文件时应用特征
同时允许1)和2)
如果允许使用2,那么在以任何方式定义特征时语法是否会改变
cargo.toml
...
[dependencies]
mon
我一直在遵循一个使用自定义类型的Rust教程。
因此定义了一个库,该库稍后通过cargo.toml依赖项在rust二进制文件中使用。
最后我提出了几个问题:
是否生锈:
必须在二进制文件中使用的cargo.toml依赖项(main.rs的)引用的库代码(下面是money_typesafe)中定义提供这些功能的特性
允许在使用二进制文件时应用特征
同时允许1)和2)
如果允许使用2,那么在以任何方式定义特征时语法是否会改变
cargo.toml
...
[dependencies]
money_typesafe = {path = "../../../2-Traits/10-Day-2-Assignment/day2assign/"}`
main.rs
...
use money_typesafe::currencies::{Money,GBP};
即2)我可以在main.rs中的货币或英镑中添加特征吗?
脚注:
我确实找到了github教程的代码。它遵循了选项1的场景。不确定是否存在其他选项,以在其他位置扩展类型的功能
它涉及:
- (我认为这里给出的示例没有什么帮助。不使用数字类型和枚举只会弄乱局面)
你在问题中使用的术语有点模棱两可——我不确定你所说的“应用”一种特质是什么意思。特质的表现方式主要有三种:
可以定义一个trait(在这里指定它所拥有的方法及其关联类型)
可以实现trait(在某种类型上实现trait的方法)
可以使用trait(将其引入范围并调用其方法)
在哪里可以实现特性有一些限制。这些限制被称为“孤立规则”,您将在中找到描述
该规则规定,除非在板条箱中定义了某个特性,或者在板条箱中定义了要在其上实现该特性的类型,否则无法在类型上实现该特性
例如,您可以自由定义自己的特性,然后在外来类型(例如std库中的类型或正在导入的其他板条箱中的类型)上实现它们。你也可以自由地在自己的类型上实现外来特性。两者都是常见的模式
孤儿规则有一个变通方法:“newtype模式”。您可以在中找到有关信息
因此,要回答您的具体问题:
rust是否需要在二进制文件中使用的cargo.toml依赖项(main.rs的)引用的库代码(下面是money_typesafe)中定义提供这些功能的特性
不。性状可以在二元板条箱中定义
rust是否允许在使用二进制文件时应用特性
是的,只要trait或实现它的类型,或者二者都在二进制板条箱中定义
同时允许1)和2)
是的,根据孤立规则,可以在外部或二进制板条箱内部定义和实现特征
如果允许使用2,那么在以任何方式定义特征时语法是否会改变
不,没有。但是需要注意的是,一个特征必须在范围内才能调用其方法,因此有必要使用当前范围内未定义的
特征。您在问题中使用的术语有点含糊不清-我不确定“应用”一个特征是什么意思。特质的表现方式主要有三种:
可以定义一个trait(在这里指定它所拥有的方法及其关联类型)
可以实现trait(在某种类型上实现trait的方法)
可以使用trait(将其引入范围并调用其方法)
在哪里可以实现特性有一些限制。这些限制被称为“孤立规则”,您将在中找到描述
该规则规定,除非在板条箱中定义了某个特性,或者在板条箱中定义了要在其上实现该特性的类型,否则无法在类型上实现该特性
例如,您可以自由定义自己的特性,然后在外来类型(例如std库中的类型或正在导入的其他板条箱中的类型)上实现它们。你也可以自由地在自己的类型上实现外来特性。两者都是常见的模式
孤儿规则有一个变通方法:“newtype模式”。您可以在中找到有关信息
因此,要回答您的具体问题:
rust是否需要在二进制文件中使用的cargo.toml依赖项(main.rs的)引用的库代码(下面是money_typesafe)中定义提供这些功能的特性
不。性状可以在二元板条箱中定义
rust是否允许在使用二进制文件时应用特性
是的,只要trait或实现它的类型,或者二者都在二进制板条箱中定义
同时允许1)和2)
是的,根据孤立规则,可以在外部或二进制板条箱内部定义和实现特征
如果允许使用2,那么在以任何方式定义特征时语法是否会改变
不,没有。但是需要注意的一点是,trait必须在范围内才能调用其方法,因此有必要使用当前范围内未定义的trait。这会有所帮助。。但我的意思是在库中定义了一个类型。。。但这些特征还不够详尽。。我通过依赖关系在二进制文件中使用该类型。我是否可以在“那里”(声明类型的库之外)创建新特性,并说库中的类型实现了这个特性?这些特性有时可能只适用于我的代码,不值得放在库代码中。干杯。这有点帮助。。但我
use std::ops::AddAssign;
use std::ops::Neg;