我想我需要一个与
Sized
。任何不是
大小
应该有这个特点。我需要这样做,以避免在我的代码中以不同的方式专门针对大小类型和非大小类型的另一个特性时实现冲突。使用
?Sized
在这种情况下不起作用,因为这会导致实现冲突。
为此,我定义了一个自动特征,然后为
T
在以下情况下
T: Sized
.
我每晚都在使用带有功能的铁锈
auto_traits
和
negative_impls
在中打开
main.rs
:
#![feature(auto_traits)]
#![feature(negative_impls)]
出于某种原因
dyn Any
不执行
Unsized
,尽管也没有实施
大小
.有什么隐含的吗
大小
自动实现中的需求还是什么?理想情况下,我希望每种类型都能扩展
大小
或
未定尺寸
没有重叠。
use std::any::Any;
use static_assertions::assert_impl_one;
pub auto trait Unsized {}
impl<T> !Unsized for T
where
T: Sized
{
}
assert_not_impl_any!(dyn Any: Sized); // Succeeds! -> dyn Any is not Sized, as expected.
assert_impl_one!(dyn Any: Unsized); // Fails! -> dyn Any is not Unsized either??? It should be.
为什么这个特性
未定尺寸
没有为明显不是的事情实现
大小
?
删除否定实现会产生相同的断言结果。
dyn任意
仍然不是
未定尺寸
.