content: {-# LANGUAGE NoImplicitPrelude #-}
  
  -- | Strict @ByteString@. Import as:
  --
  -- > import qualified RIO.ByteString as B
  --
  -- This module does not export any partial functions.  For those, see
  -- "RIO.ByteString.Partial"
  module RIO.ByteString
    ( module Data.ByteString
    , module RIO.ByteString
    ) where
  
  import Data.ByteString hiding (head, last, tail, init, foldl1, foldl1', foldr1, foldr1', maximum, minimum, findSubstring, findSubstrings, packCString, packCStringLen, useAsCString, useAsCStringLen, getLine, getContents, putStr, putStrLn, interact, readFile, writeFile, appendFile, hGetLine, hGetContents, hGet, hGetSome, hGetNonBlocking, hPut, hPutNonBlocking, hPutStr, hPutStrLn, breakByte)
  import qualified Data.ByteString as B
  import RIO
  import Foreign.C.String (CString, CStringLen)
  
  -- | Lifted 'B.packCString'
  packCString :: MonadIO m => CString -> m ByteString
  packCString = liftIO . B.packCString
  
  -- | Lifted 'B.packCStringLen'
  packCStringLen :: MonadIO m => CStringLen -> m ByteString
  packCStringLen = liftIO . B.packCStringLen
  
  -- | Unlifted 'B.useAsCString'
  useAsCString :: MonadUnliftIO m => ByteString -> (CString -> m a) -> m a
  useAsCString bs inner = withRunInIO $ \run -> B.useAsCString bs $ run . inner
  
  -- | Unlifted 'B.useAsCStringLen'
  useAsCStringLen :: MonadUnliftIO m => ByteString -> (CStringLen -> m a) -> m a
  useAsCStringLen bs inner = withRunInIO $ \run -> B.useAsCStringLen bs $ run . inner
  
  -- | Lifted 'B.getLine'
  getLine :: MonadIO m => m ByteString
  getLine = liftIO B.getLine
  
  -- | Lifted 'B.getContents'
  getContents :: MonadIO m => m ByteString
  getContents = liftIO B.getContents
  
  -- | Lifted 'B.putStr'
  putStr :: MonadIO m => ByteString -> m ()
  putStr = liftIO . B.putStr
  
  -- | Lifted 'B.interact'
  interact :: MonadIO m => (ByteString -> ByteString) -> m ()
  interact = liftIO . B.interact
  
  -- | Lifted 'B.readFile'
  readFile :: MonadIO m => FilePath -> m ByteString
  readFile = liftIO . B.readFile
  
  -- | Lifted 'B.writeFile'
  writeFile :: MonadIO m => FilePath -> ByteString -> m ()
  writeFile fp = liftIO . B.writeFile fp
  
  -- | Lifted 'B.appendFile'
  appendFile :: MonadIO m => FilePath -> ByteString -> m ()
  appendFile fp = liftIO . B.appendFile fp
  
  -- | Lifted 'B.hGetLine'
  hGetLine :: MonadIO m => Handle -> m ByteString
  hGetLine = liftIO . B.hGetLine
  
  -- | Lifted 'B.hGetContents'
  hGetContents :: MonadIO m => Handle -> m ByteString
  hGetContents = liftIO . B.hGetContents
  
  -- | Lifted 'B.hGet'
  hGet :: MonadIO m => Handle -> Int -> m ByteString
  hGet h = liftIO . B.hGet h
  
  -- | Lifted 'B.hGetSome'
  hGetSome :: MonadIO m => Handle -> Int -> m ByteString
  hGetSome h = liftIO . B.hGetSome h
  
  -- | Lifted 'B.hGetNonBlocking'
  hGetNonBlocking :: MonadIO m => Handle -> Int -> m ByteString
  hGetNonBlocking h = liftIO . B.hGetNonBlocking h
  
  -- | Lifted 'B.hPut'
  hPut :: MonadIO m => Handle -> ByteString -> m ()
  hPut h = liftIO . B.hPut h
  
  -- | Lifted 'B.hPutNonBlocking'
  hPutNonBlocking :: MonadIO m => Handle -> ByteString -> m ByteString
  hPutNonBlocking h = liftIO . B.hPutNonBlocking h
  
  -- | Lifted 'B.hPutStr'
  hPutStr :: MonadIO m => Handle -> ByteString -> m ()
  hPutStr h = liftIO . B.hPutStr h
  