/// Start a streaming `{{ owner_type }}::{{ adapter_name }}` request.
///
/// Returns a fresh `{{ handle_name }}` whose ownership transfers to the
/// Swift caller (swift-bridge boxes the handle internally).
pub fn {{ fn_start }}({{ start_params }}) -> Result<{{ handle_name }}, String> {
use ::futures_util::StreamExt;
let rt = crate::__alef_tokio_runtime();
let raw = rt.block_on(async {
{{ core_call }}
.await
.map_err(|e| e.to_string())
})?;
let erased: ::futures_util::stream::BoxStream<
'static,
Result<{{ core_item }}, Box<dyn ::std::error::Error + Send + Sync + 'static>>,
> = Box::pin(
raw.map(|r| r.map_err(|e| Box::new(e) as Box<dyn ::std::error::Error + Send + Sync + 'static>)),
);
Ok({{ handle_name }} {
_rt: rt.handle().clone(),
stream: ::std::sync::Mutex::new(Some(erased)),
})
}