diff --git a/deferred-folds.cabal b/deferred-folds.cabal
--- a/deferred-folds.cabal
+++ b/deferred-folds.cabal
@@ -1,5 +1,5 @@
 name: deferred-folds
-version: 0.9.2
+version: 0.9.3
 category: Folding
 synopsis: Abstractions over deferred folds
 description:
@@ -42,4 +42,5 @@
     containers >=0.5 && <0.6,
     foldl >=1 && <2,
     primitive >=0.6.4 && <0.7,
-    transformers >=0.5 && <0.6
+    transformers >=0.5 && <0.6,
+    vector >=0.12 && <0.13
diff --git a/library/DeferredFolds/Defs/Unfoldr.hs b/library/DeferredFolds/Defs/Unfoldr.hs
--- a/library/DeferredFolds/Defs/Unfoldr.hs
+++ b/library/DeferredFolds/Defs/Unfoldr.hs
@@ -7,6 +7,7 @@
 import qualified Data.IntMap.Strict as IntMap
 import qualified Data.ByteString as ByteString
 import qualified Data.ByteString.Short.Internal as ShortByteString
+import qualified Data.Vector.Generic as GenericVector
 
 
 deriving instance Functor Unfoldr
@@ -133,6 +134,11 @@
     then step (index, indexPrimArray pa index) (loop (succ index))
     else state
   in loop 0
+
+{-| Elements of a vector coming paired with indices -}
+{-# INLINE vectorWithIndices #-}
+vectorWithIndices :: GenericVector.Vector vector a => vector a -> Unfoldr (Int, a)
+vectorWithIndices vector = Unfoldr $ \ step state -> GenericVector.ifoldr (\ index a -> step (index, a)) state vector
 
 {-|
 Binary digits of a non-negative integral number.
