Struct apollo_parser::LimitTracker
source · Expand description
A LimitTracker enforces a particular limit within the parser. It keeps track of utilization so that we can report how close to a limit we approached over the lifetime of the tracker.
use apollo_parser::Parser;
let query = "
{
animal
...snackSelection
... on Pet {
playmates {
count
}
}
}
";
// Create a new instance of a parser given a query and a
// recursion limit
let parser = Parser::new(query).recursion_limit(4);
// Parse the query, and return a SyntaxTree.
let ast = parser.parse();
// Retrieve the limits
let usage = ast.recursion_limit();
// Print out some of the usage details to see what happened during
// our parse. `limit` just reports the limit we set, `high` is the
// high-water mark of recursion usage.
println!("{:?}", usage);
println!("{:?}", usage.limit);
println!("{:?}", usage.high);
// Check that are no errors. These are not part of the AST.
assert_eq!(0, ast.errors().len());
// Get the document root node
let doc = ast.document();
// ... continue
Fields§
§high: usize
High Water mark for this limit
limit: usize
Limit.
Implementations§
Trait Implementations§
source§impl Clone for LimitTracker
impl Clone for LimitTracker
source§fn clone(&self) -> LimitTracker
fn clone(&self) -> LimitTracker
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more