edlang/winnow/error/index.html
2024-03-27 11:12:16 +00:00

25 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Error management"><title>winnow::error - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-5bc39a1768837dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="winnow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.77.0 (aedd173a2 2024-03-17)" data-channel="1.77.0" data-search-js="search-dd67cee4cfa65049.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-4c98445ec4002617.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-48f368f3872407c8.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-04d5337699b92874.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../winnow/index.html">winnow</a><span class="version">0.6.5</span></h2></div><h2 class="location"><a href="#">Module error</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate winnow</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../winnow/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">winnow</a>::<wbr><a class="mod" href="#">error</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/winnow/error.rs.html#1-1399">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><h2 id="error-management"><a class="doc-anchor" href="#error-management">§</a>Error management</h2>
<p>Errors are designed with multiple needs in mind:</p>
<ul>
<li>Accumulate more <a href="../trait.Parser.html#method.context" title="method winnow::Parser::context">context</a> as the error goes up the parser chain</li>
<li>Distinguish between <a href="enum.ErrMode.html" title="enum winnow::error::ErrMode">recoverable errors,
unrecoverable errors, and more data is needed</a></li>
<li>Have a very low overhead, as errors are often discarded by the calling parser (examples: <code>repeat</code>, <code>alt</code>)</li>
<li>Can be modified according to the users needs, because some languages need a lot more information</li>
<li>Help thread-through the <a href="../stream/index.html" title="mod winnow::stream">stream</a></li>
</ul>
<p>To abstract these needs away from the user, generally <code>winnow</code> parsers use the <a href="type.PResult.html" title="type winnow::error::PResult"><code>PResult</code></a>
alias, rather than <a href="https://doc.rust-lang.org/1.77.0/core/result/enum.Result.html" title="enum core::result::Result"><code>Result</code></a>. <a href="../trait.Parser.html#method.parse" title="method winnow::Parser::parse"><code>Parser::parse</code></a> is a top-level operation
that can help convert to a <code>Result</code> for integrating with your applications error reporting.</p>
<p>Error types include:</p>
<ul>
<li><code>()</code></li>
<li><a href="enum.ErrorKind.html" title="enum winnow::error::ErrorKind"><code>ErrorKind</code></a></li>
<li><a href="struct.InputError.html" title="struct winnow::error::InputError"><code>InputError</code></a> (mostly for testing)</li>
<li><a href="struct.ContextError.html" title="struct winnow::error::ContextError"><code>ContextError</code></a></li>
<li><a href="enum.TreeError.html" title="enum winnow::error::TreeError"><code>TreeError</code></a> (mostly for testing)</li>
<li>[Custom errors][crate::_topic::error]</li>
</ul>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.ContextError.html" title="struct winnow::error::ContextError">ContextError</a></div><div class="desc docblock-short">Accumulate context while backtracking errors</div></li><li><div class="item-name"><a class="struct" href="struct.InputError.html" title="struct winnow::error::InputError">InputError</a></div><div class="desc docblock-short">Capture input on error</div></li><li><div class="item-name"><a class="struct" href="struct.ParseError.html" title="struct winnow::error::ParseError">ParseError</a></div><div class="desc docblock-short">See <a href="../trait.Parser.html#method.parse" title="method winnow::Parser::parse"><code>Parser::parse</code></a></div></li><li><div class="item-name"><a class="struct" href="struct.TreeErrorBase.html" title="struct winnow::error::TreeErrorBase">TreeErrorBase</a></div><div class="desc docblock-short">See <a href="enum.TreeErrorFrame.html#variant.Kind" title="variant winnow::error::TreeErrorFrame::Kind"><code>TreeErrorFrame::Kind</code></a>, <a href="trait.ParserError.html#tymethod.append" title="method winnow::error::ParserError::append"><code>ParserError::append</code></a></div></li><li><div class="item-name"><a class="struct" href="struct.TreeErrorContext.html" title="struct winnow::error::TreeErrorContext">TreeErrorContext</a></div><div class="desc docblock-short">See <a href="enum.TreeErrorFrame.html#variant.Context" title="variant winnow::error::TreeErrorFrame::Context"><code>TreeErrorFrame::Context</code></a>, <a href="trait.AddContext.html#method.add_context" title="method winnow::error::AddContext::add_context"><code>AddContext::add_context</code></a></div></li></ul><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.ErrMode.html" title="enum winnow::error::ErrMode">ErrMode</a></div><div class="desc docblock-short">Add parse error state to <a href="trait.ParserError.html" title="trait winnow::error::ParserError"><code>ParserError</code></a>s</div></li><li><div class="item-name"><a class="enum" href="enum.ErrorKind.html" title="enum winnow::error::ErrorKind">ErrorKind</a></div><div class="desc docblock-short">Provide some minor debug context for errors</div></li><li><div class="item-name"><a class="enum" href="enum.Needed.html" title="enum winnow::error::Needed">Needed</a></div><div class="desc docblock-short">Contains information on needed data if a parser returned <code>Incomplete</code></div></li><li><div class="item-name"><a class="enum" href="enum.StrContext.html" title="enum winnow::error::StrContext">StrContext</a></div><div class="desc docblock-short">Additional parse context for <a href="struct.ContextError.html" title="struct winnow::error::ContextError"><code>ContextError</code></a> added via <a href="../trait.Parser.html#method.context" title="method winnow::Parser::context"><code>Parser::context</code></a></div></li><li><div class="item-name"><a class="enum" href="enum.StrContextValue.html" title="enum winnow::error::StrContextValue">StrContextValue</a></div><div class="desc docblock-short">See <a href="enum.StrContext.html" title="enum winnow::error::StrContext"><code>StrContext</code></a></div></li><li><div class="item-name"><a class="enum" href="enum.TreeError.html" title="enum winnow::error::TreeError">TreeError</a></div><div class="desc docblock-short">Trace all error paths, particularly for tests</div></li><li><div class="item-name"><a class="enum" href="enum.TreeErrorFrame.html" title="enum winnow::error::TreeErrorFrame">TreeErrorFrame</a></div><div class="desc docblock-short">See <a href="enum.TreeError.html#variant.Stack" title="variant winnow::error::TreeError::Stack"><code>TreeError::Stack</code></a></div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.AddContext.html" title="trait winnow::error::AddContext">AddContext</a></div><div class="desc docblock-short">Used by <a href="../trait.Parser.html#method.context" title="method winnow::Parser::context"><code>Parser::context</code></a> to add custom data to error while backtracking</div></li><li><div class="item-name"><a class="trait" href="trait.ErrorConvert.html" title="trait winnow::error::ErrorConvert">ErrorConvert</a></div><div class="desc docblock-short">Equivalent of <code>From</code> implementation to avoid orphan rules in bits parsers</div></li><li><div class="item-name"><a class="trait" href="trait.FromExternalError.html" title="trait winnow::error::FromExternalError">FromExternalError</a></div><div class="desc docblock-short">Create a new error with an external error, from <a href="https://doc.rust-lang.org/1.77.0/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr"><code>std::str::FromStr</code></a></div></li><li><div class="item-name"><a class="trait" href="trait.ParserError.html" title="trait winnow::error::ParserError">ParserError</a></div><div class="desc docblock-short">The basic <a href="../trait.Parser.html" title="trait winnow::Parser"><code>Parser</code></a> trait for errors</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.IResult.html" title="type winnow::error::IResult">IResult</a></div><div class="desc docblock-short">For use with <a href="../trait.Parser.html#method.parse_peek" title="method winnow::Parser::parse_peek"><code>Parser::parse_peek</code></a> which allows the input stream to be threaded through a
parser.</div></li><li><div class="item-name"><a class="type" href="type.PResult.html" title="type winnow::error::PResult">PResult</a></div><div class="desc docblock-short">For use with <a href="../trait.Parser.html#tymethod.parse_next" title="method winnow::Parser::parse_next"><code>Parser::parse_next</code></a></div></li></ul></section></div></main></body></html>