2016-10-23 77 views
0

我有一个递增处理Collection的结构。将Int转换为Collection.IndexDistance

struct Foo<T: BidirectionalCollection> 
    where T.Iterator.Element == UInt8, 
      T.SubSequence: BidirectionalCollection, 
      T.SubSequence.Iterator.Element == T.Iterator.Element, 
      T.SubSequence.Index == T.Index, 
      T.SubSequence.IndexDistance == T.IndexDistance, 
      T.SubSequence.SubSequence == T.SubSequence 
{ 
    private var state: T.IndexDistance = 0 

    mutating func process(_ foo: T) { 
     // ... 
    } 
} 

我想保持在T.IndexDistance轨道内部(例如计数的T.IndexDistance小号处理的总数)。

但是,我还想将此距离与正常的UInt s进行比较,并将其设置为正常的UInt s。

问题是,我似乎没有找到方法将UInt转换为T.IndexDistance

回答

0
let someUInt: UInt = 42 
let indexDistance = T.IndexDistance(IntMax(someUInt))