error: The requirement is only added

error: The requirement is only added

我试图编译 fuse crate。

失败并出现以下错误:

session.rs:110:1: 114:2 error: The requirement `FS : Filesystem` is added only by the Drop impl. [E0367]

对应的line是这样的:

impl<FS: Filesystem> Drop for Session<FS>

Drop 特性是为 Session 类型实现的,这对我来说很好。

这里到底是什么错误?

您现在不能对 Drop 特性使用条件或多重分派。换句话说,Drop 的每个实现都必须应用于 Self 类型的所有 "forms",因此不能限制不属于类型本身的包含类型参数。

在此示例中,如果 FS: FilesystemSession<FS> 将仅实施 Drop,但 Session<u8> 不会。这是不允许的。要修复此错误,您可以删除 Drop impl 上的边界,或者通过在类型声明中添加 where FS: FilesystemSession 类型的 "inherent" 边界。