{-# LANGUAGE Rank2Types, FlexibleContexts, BangPatterns #-} module Data.RangeMin.Common.Vector (inlineCreate, module Data.RangeMin.Common.Vector.Utils) where import Data.RangeMin.Common.ST import qualified Data.Vector.Generic.New as New import Data.RangeMin.Common.Vector.Utils import Prelude hiding (drop, read) {-# INLINE [1] inlineCreate #-} inlineCreate :: Vector v a => (forall s . ST s (Mutable v s a)) -> v a inlineCreate m = inlineNew (New.New m) {-# INLINE inlineNew #-} inlineNew :: Vector v a => New.New v a -> v a inlineNew !m = inlineRunST (unsafeFreeze =<< New.run m)