2017-09-22 53 views
0

以下对我来说似乎是一个错误。如何在where子句中使用关联的常量?

struct Seq([u8; 8]); 

impl From<[u8; 8]> for Seq { 
    fn from(data: [u8; 8]) -> Seq { 
     Seq(data) 
    } 
} 

trait Sequence { 
    const LEN: usize; 
} 

impl Sequence for Seq { 
    const LEN: usize = 8; 
} 

trait ByteSequence { 
    fn check(); 
} 

impl<S> ByteSequence for S 
where 
    S: Sequence + From<[u8; <S as Sequence>::LEN]>, 
{ 
    fn check() {} 
} 

结果如下错误:playground

error[E0277]: the trait bound `S: Sequence` is not satisfied 
    --> src/main.rs:23:29 
    | 
23 |  S: Sequence + From<[u8; <S as Sequence>::LEN]>, 
    |        ^^^^^^^^^^^^^^^^^^^^ the trait `Sequence` is not implemented for `S` 
    | 
    = help: consider adding a `where S: Sequence` bound 
    = note: required by `Sequence::LEN` 

我还试图加入结合在一个额外的行或直接在IMPL声明。

回答