proto-lens-0.5.1.0: A lens-based implementation of protocol buffers in Haskell.

Data.ProtoLens.Encoding.Parser.Unsafe

Synopsis

# Documentation

unsafeLiftIO :: IO a -> Parser a Source #

Runs an arbitrary IO action inside a Parser. The generated code uses this function to construct vectors efficiently by incrementally building up mutable vectors.

NOTE: This is unsafe since runParser is a pure function, which lets us lift arbitrary IO into pure operations. However, here are some guarantees that we do get:

• For each individual call to runParser, the action wrapped by unsafeLiftIO will be called exactly once.
• Different calls to unsafeLiftIO within the same call to runParser will be sequenced according to their order in the Parser monad.