E4222#
コンパイラ診断名:invalid_lexscan_target。
字句マッチの対象が不正です。
lexmatch はメモリ内の String または StringView を受け付けます。lexscan はメモリ内の @lexbuf.StringScanner、同期ストリーミングの @lexbuf.Lexbuf、または非同期ストリーミングの @lexbuf.AsyncLexbuf を受け付けます。String または StringView の値は有効な lexscan 対象ではありません。メモリ内で 1 回だけ照合する場合は lexmatch を使い、複数回のスキャンでカーソルを維持する場合は StringScanner を作成してください。数値やユーザー定義の字句バッファ類似型など、その他の値はこれらの式では照合できません。
誤った例#
///|
pub fn scan_text(text : String) -> Unit {
lexscan text with longest {
_ => ()
}
}
提案#
文字列相当の値には lexmatch を使うか、lexscan 用に StringScanner、Lexbuf、または AsyncLexbuf を作成してください。
///|
pub fn match_text(text : String) -> Unit {
lexmatch text with longest {
_ => ()
}
}