# Extension on Array where Element is generic type

**URL:** <https://forums.swift.org/t/extension-on-array-where-element-is-generic-type/10225>\
**Category:** Using Swift\
**Created:** [February 22, 2018, 8:01pm UTC](https://forums.swift.org/t/extension-on-array-where-element-is-generic-type/10225 "2018-02-22T20:01:27Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![nnnnnnnn](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/nnnnnnnn/32/264_2.png) [@nnnnnnnn](https://forums.swift.org/u/nnnnnnnn)\
**Post date:** [February 22, 2018, 8:30pm UTC](https://forums.swift.org/t/extension-on-array-where-element-is-generic-type/10225/4 "2018-02-22T20:30:39Z")

</div>

The workaround for this kind of thing is to make a protocol that can produce the parameterized type that you want, like so:

```swift
protocol Rangey {
  associatedtype Bound: Comparable
  var range: Range<Bound> { get }
}

extension Range: Rangey {
  var range: Range<Bound> { return self }
}

extension Array where Element: Rangey, Element.Bound == Date {
  func contains(date: Date) -> Bool {
    return contains(where: { $0.range.contains(date) })
  }
}

```

---

_[View the full topic](https://forums.swift.org/t/extension-on-array-where-element-is-generic-type/10225)._
