簡體   English   中英

規則“只有在當前 crate 中定義的特征可以用於任意類型”是否可以擴展到工作區?

[英]Could rule "only traits defined in the current crate can be implemented for arbitrary types" be extended to workspace?

在同一工作區中定義的 crate 的情況下,我測試了規則“只有在當前 crate 中定義的特征可以用於任意類型”

MyWorkSpace-|
            |-MyCrateA--> pub MyTrait {}
            |
            |-MyCrateB--> pub MyStruct;
            |
            |-MyCrateC--> impl MyTrait for MyStruct {}

正如預期的那樣,它沒有工作......

我知道這個規則避免了impls之間關於依賴關系的沖突。

但是,在工作空間的情況下,所有者可以控制其中的板條箱。 那么為什么不可能有一個規則“只有在當前工作空間中定義的特征可以用於任意類型”

工作區是貨物的概念。 rustc 對它們一無所知。

此外,對該功能的需求非常低。 如果板條箱僅出於性能原因而分開,您可以隨時在需要時將它們統一起來。 如果由於 API 問題而將它們分開,那么孤兒規則應該仍然有效。

我不認為這個功能是否曾經被建議過(你可以嘗試,雖然我懷疑它會被接受),但它沒有被接受/實施。

板條箱應該是一個 API 邊界。 如果您需要打破工作空間內的孤立規則,您可能誤用了工作空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM