2016-10-23 78 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))