Angstrom.UnsafeUnsafe Operations on Angstrom's Internal Buffer
These functions are considered unsafe as they expose the input buffer to client code without any protections against modification, or leaking references. They are exposed to support performance-sensitive parsers that want to avoid allocation at all costs. Client code should take care to write the input buffer callback functions such that they:
[off, off + len);[off, off + len) if the parser might backtrack; andIf the input buffer callback functions do not do any of these things, then the client may consider their use safe.
take n f accepts exactly n characters of input into the parser's internal buffer then calls f buffer ~off ~len. buffer is the parser's internal buffer. off is the offset from the start of buffer containing the requested content. len is the length of the requested content. len is guaranteed to be equal to n.
take_while check f accepts input into the parser's interal buffer as long as check returns true then calls f buffer ~off ~len. buffer is the parser's internal buffer. off is the offset from the start of buffer containing the requested content. len is the length of the content matched by check.
This parser does not fail. If check returns false on the first character, len will be 0.
take_while1 check f accepts input into the parser's interal buffer as long as check returns true then calls f buffer ~off ~len. buffer is the parser's internal buffer. off is the offset from the start of buffer containing the requested content. len is the length of the content matched by check.
This parser requires that f return true for at least one character of input, and will fail otherwise.
take_till check f accepts input into the parser's interal buffer as long as check returns false then calls f buffer ~off ~len. buffer is the parser's internal buffer. off is the offset from the start of buffer containing the requested content. len is the length of the content matched by check.
This parser does not fail. If check returns true on the first character, len will be 0.