fn locate_substr(haystack: &str, needle: &str, start_pos: usize) -> i64
Find the 1-based position of needle in haystack, starting from start_pos (0-based character index). Returns 0 if not found.