error explicit-interface
Интерфейс @explicit требует impl или @derive.
What it means#
An @explicit interface is satisfied only by an explicit impl I for T or by @derive(I) (§4.6); having methods of the right shape is not enough. Standard interfaces such as Copy, Drop and Serializable are explicit.
Example#
@explicit interface Persistent { fn key() -> str }
data Doc { id: u64 }
impl Doc {
fn key() -> str => "doc"
}
assert Doc: Persistent // <- explicit-interfaceerror
explicit-interface
How to fix#
@explicit interface Persistent { fn key() -> str }
data Doc { id: u64 }
impl Persistent for Doc {
fn key() -> str => "doc"
}
assert Doc: PersistentWrite impl I for T { ... } (allowed when I or T is declared in your package) or add @derive(I) when the interface can be derived.