///|
/// Find the first character that can start inline Markdown syntax.
#inline
fn find_inline_marker_candidate_scalar(
  text : String,
  start : Int,
  end : Int,
) -> Int {
  for pos in start.. Int =
  #| (text, start, end) => {
  #| const bridge = globalThis.__mizchiMarkdownInlineMarkerSimd;
  #| return bridge === undefined
  #| ? -2
  #| : bridge.findInlineMarkerUtf8(text, start, end);
  #| }

///|
/// Use the copy-inclusive Wasm path only for runs long enough to amortize
/// TextEncoder and the JS/Wasm boundary.
#cfg(target="js")
fn find_inline_marker_candidate(text : String, start : Int, end : Int) -> Int {
  guard end - start >= 64 else {
    return find_inline_marker_candidate_scalar(text, start, end)
  }
  match find_inline_marker_wasm_utf8(text, start, end) {
    -1 => end
    -2 => find_inline_marker_candidate_scalar(text, start, end)
    found => found
  }
}

///|
#cfg(not(target="js"))
#inline
fn find_inline_marker_candidate(text : String, start : Int, end : Int) -> Int {
  find_inline_marker_candidate_scalar(text, start, end)
}