-- | 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 #-}