错误:仅添加要求

mic*_*has 2 rust

我试图编译熔断器箱.

此操作失败,并显示以下错误:

session.rs:110:1: 114:2 error: The requirement `FS : Filesystem` is added only by the Drop impl. [E0367]
Run Code Online (Sandbox Code Playgroud)

相应的看起来像这样:

impl<FS: Filesystem> Drop for Session<FS>
Run Code Online (Sandbox Code Playgroud)

Drop特征是针对该Session类型实现的,这看起来很好.

这里的错误究竟是什么?

ree*_*eem 5

您现在不能对Drop特征使用条件或多重调度.换句话说,Drop的每个实现都必须应用于该Self类型的所有"形式" ,因此不能对不属于该类型本身的包含类型参数进行限制.

在这个例子中,Session<FS>只会实现Dropif FS: Filesystem,但Session<u8>不会.这是不允许的.要修复此错误,您可以删除Dropimpl 上的绑定,或者通过在类型声明中添加它来添加类型where FS: Filesystem的"固有"边界Session.