pub fn resolve_required_stock_ids<F>(
parsed: &ParsedSymbolList,
resolver: F,
) -> Result<Vec<(Security, u64)>, String>Expand description
把已校验的列表整体解析到 (Security, stock_id) tuple 列表。
整体语义:任一 symbol 在 resolver(通常是 StaticDataCache)里
cache miss 或解析为 stock_id=0 → 整批 reject(不 partial,不 silent,
不 fallback)。caller 必须先调用 parse_required_symbol_list
拿到 ParsedSymbolList,本函数不再校验空列表 / market=0 / code=“”.
resolver 闭包是抽象层 — caller 传入 |sec| static_cache .get_security_info_trigger_refresh(&format!("{}_{}", sec.market, sec.code)) .map(|info| info.stock_id). 这样本 helper 不依赖 futu-cache(保持
futu-qot crate 边界清晰),同时 caller 可以注入 mock resolver 单测。
失败信息含具体 missing symbol 列表,用户能立刻判断哪个 symbol 没在 stock_list cache 里(典型场景:海外期货 cache 未刷新 / symbol 拼写错 / market 误传)。