docs: def unique(iterable, key=None):
      """Removes duplicates from given iterable, using given key as criterion.
  
      :param key: Key function which returns a hashable,
                  uniquely identifying an object.
  
      :return: Iterable with duplicates removed
      """
      ensure_iterable(iterable)
      key = hash if key is None else ensure_callable(key)
  
      def generator():
          seen = set()
          for elem in iterable:
              k = key(elem)
              if k not in seen:
                  seen.add(k)
                  yield elem
  
      return generator()