-- | Provides conversion functions between strict @ByteString@s and storable
-- @Vector@s.
module Data.ByteVector
( toByteVector
, fromByteVector
) where
import Data.ByteString.Internal (ByteString (PS))
import Data.Vector.Storable (Vector, unsafeFromForeignPtr,
unsafeToForeignPtr)
import Data.Word (Word8)
-- | Convert a @ByteString@ into a storable @Vector@.
--
-- Since 0.6.1
toByteVector :: ByteString -> Vector Word8
toByteVector (PS fptr offset idx) = unsafeFromForeignPtr fptr offset idx
{-# INLINE toByteVector #-}
-- | Convert a storable @Vector@ into a @ByteString@.
--
-- Since 0.6.1
fromByteVector :: Vector Word8 -> ByteString
fromByteVector v =
PS fptr offset idx
where
(fptr, offset, idx) = unsafeToForeignPtr v
{-# INLINE fromByteVector #-}