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