-- | -- Extensions to the standard mutable Vector API. module VectorBuilder.MVector where import VectorBuilder.Private.Prelude import Data.Vector.Mutable import qualified VectorBuilder.Private.Builder as A import qualified VectorBuilder.Private.Action as B -- | -- Construct a mutable vector from a builder. {-# INLINABLE build #-} build :: A.Builder element -> ST s (MVector s element) build (A.Builder (B.Action actionFn)) = case actionFn 0 of (updateFn, size) -> do vector <- unsafeNew size updateFn vector return vector