1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

use std::any::Any;
use std::ops::Range;
use crate::*;
use std::fmt::Debug;

/// A `Parse` may use a `Parser` to yield an associated `Target` type.
pub trait Parse : Debug + Clone + Any {

	/// The type returned from parsing `Self`.
	type Target;

	/// What a parser will call to advance itself.
	fn parse_from(parser: &mut Parser) -> Result<Self::Target>;

}