Using trait objects seems good so far.

This commit is contained in:
Tom Alexander 2022-10-14 20:09:09 -04:00
parent 262bd3c061
commit 0cd3300444
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

View File

@ -3,21 +3,17 @@ use nom::error::VerboseError;
use nom::IResult;
#[derive(Clone)]
pub struct NomContext
// where
// F: for<'a> FnMut(&'a str) -> IResult<&'a str, &'a str, VerboseError<&'a str>>,
// F: Clone,
{
// pub fail_matcher: F,
/// You can't have nested bolds in org-mode
pub struct NomContext {
pub fail_matcher: &dyn FnMut(&str) -> IResult<&str, &str, VerboseError<&str>>,
/// You can't have nested bolds or links in org-mode
pub can_match_bold: bool,
pub can_match_link: bool,
}
impl NomContext {
pub fn new(fail_matcher: F) -> Self {
pub fn new(fail_matcher: &dyn FnMut(&str) -> IResult<&str, &str, VerboseError<&str>>) -> Self {
NomContext {
// fail_matcher,
fail_matcher,
can_match_bold: true,
can_match_link: true,
}