Sequence.swift 537 B

1234567891011121314151617181920
  1. //
  2. // Sequence.swift
  3. // LoopKit
  4. //
  5. // Created by Michael Pangburn on 6/23/20.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. extension Sequence {
  9. func range<Metric: Comparable>(of metricForElement: (Element) throws -> Metric) rethrows -> ClosedRange<Metric>? {
  10. try lazy.map(metricForElement).reduce(nil) { range, metric in
  11. if let range = range {
  12. return range.expandedToInclude(metric)
  13. } else {
  14. return metric...metric
  15. }
  16. }
  17. }
  18. }