Use AsRef<str> for more flexible API.
This commit is contained in:
@@ -695,9 +695,11 @@ impl Token {
|
||||
|
||||
/// Reverse lookup a token from a piece of syntax.
|
||||
#[must_use]
|
||||
pub fn lookup_from_syntax(syntax: &str) -> Option<Self> {
|
||||
pub fn lookup_from_syntax(syntax: impl AsRef<str>) -> Option<Self> {
|
||||
use Token::*;
|
||||
|
||||
let syntax = syntax.as_ref();
|
||||
|
||||
Some(match syntax {
|
||||
"{" => LeftBrace,
|
||||
"}" => RightBrace,
|
||||
@@ -1364,7 +1366,9 @@ fn is_numeric_digit(c: char) -> bool {
|
||||
#[cfg(feature = "metadata")]
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub fn is_doc_comment(comment: &str) -> bool {
|
||||
pub fn is_doc_comment(comment: impl AsRef<str>) -> bool {
|
||||
let comment = comment.as_ref();
|
||||
|
||||
(comment.starts_with("///") && !comment.starts_with("////"))
|
||||
|| (comment.starts_with("/**") && !comment.starts_with("/***"))
|
||||
}
|
||||
@@ -2004,8 +2008,8 @@ fn get_identifier(
|
||||
/// Is this keyword allowed as a function?
|
||||
#[inline]
|
||||
#[must_use]
|
||||
pub fn is_keyword_function(name: &str) -> bool {
|
||||
match name {
|
||||
pub fn is_keyword_function(name: impl AsRef<str>) -> bool {
|
||||
match name.as_ref() {
|
||||
KEYWORD_PRINT | KEYWORD_DEBUG | KEYWORD_TYPE_OF | KEYWORD_EVAL | KEYWORD_FN_PTR
|
||||
| KEYWORD_FN_PTR_CALL | KEYWORD_FN_PTR_CURRY | KEYWORD_IS_DEF_VAR => true,
|
||||
|
||||
@@ -2037,8 +2041,8 @@ pub fn is_valid_identifier(name: impl Iterator<Item = char>) -> bool {
|
||||
/// Is a text string a valid scripted function name?
|
||||
#[inline(always)]
|
||||
#[must_use]
|
||||
pub fn is_valid_function_name(name: &str) -> bool {
|
||||
is_valid_identifier(name.chars())
|
||||
pub fn is_valid_function_name(name: impl AsRef<str>) -> bool {
|
||||
is_valid_identifier(name.as_ref().chars())
|
||||
}
|
||||
|
||||
/// Is a character valid to start an identifier?
|
||||
@@ -2286,7 +2290,7 @@ impl Engine {
|
||||
#[must_use]
|
||||
pub(crate) fn lex_raw<'a>(
|
||||
&'a self,
|
||||
input: impl IntoIterator<Item = &'a &'a str>,
|
||||
input: impl IntoIterator<Item = &'a (impl AsRef<str> + 'a)>,
|
||||
token_mapper: Option<&'a OnParseTokenCallback>,
|
||||
) -> (TokenIterator<'a>, TokenizerControl) {
|
||||
let buffer: TokenizerControl = Cell::new(TokenizerControlBlock::new()).into();
|
||||
@@ -2309,7 +2313,10 @@ impl Engine {
|
||||
tokenizer_control: buffer,
|
||||
stream: MultiInputsStream {
|
||||
buf: None,
|
||||
streams: input.into_iter().map(|s| s.chars().peekable()).collect(),
|
||||
streams: input
|
||||
.into_iter()
|
||||
.map(|s| s.as_ref().chars().peekable())
|
||||
.collect(),
|
||||
index: 0,
|
||||
},
|
||||
token_mapper,
|
||||
|
Reference in New Issue
Block a user