@@ -103,19 +103,31 @@ pub use ic_error_types::RejectCode;
103103/// # Execution
104104///
105105/// A [`Call`] can be executed in two ways:
106- /// - `.await`: convert into a future, execute asynchronously and wait for response.
107- /// - [`oneway`][Self::oneway]: send a oneway call and not wait for the response.
106+ /// - **Asynchronously**: Convert to a [`CallFuture`] and await the response.
107+ /// - Direct approach: Use `.await` on the call (e.g., `call.await`).
108+ /// - Collective approach: Use [`IntoFuture::into_future`] to obtain futures explicitly,
109+ /// then combine them with `join!`, `select!`, or other combinators.
110+ /// - **One-way**: Send a call with [`oneway`][Self::oneway] when you don't need a response.
108111///
109112/// ## Example
110113///
111114/// ```rust, no_run
112115/// # use ic_cdk::call::Call;
116+ /// # use candid::Principal;
113117/// # async fn bar() {
114- /// # let canister_id = ic_cdk::api::canister_self();
115- /// # let method = "foo";
116- /// let call = Call::bounded_wait(canister_id, method);
117- /// let response = call.clone().await.unwrap();
118- /// call.oneway().unwrap();
118+ /// # let canister_id : Principal = todo!();
119+ /// # let method: &str = todo!();
120+ /// # let canister_id1 : Principal = todo!();
121+ /// # let method1: &str = todo!();
122+ /// # let canister_id2 : Principal = todo!();
123+ /// # let method2: &str = todo!();
124+ /// let response = Call::bounded_wait(canister_id, method).await;
125+ /// let calls = vec![
126+ /// Call::bounded_wait(canister_id1, method1).into_future(),
127+ /// Call::bounded_wait(canister_id2, method2).into_future(),
128+ /// ];
129+ /// let responses = futures::future::join_all(calls).await;
130+ /// Call::bounded_wait(canister_id, method).oneway().unwrap();
119131/// # }
120132/// ```
121133///
0 commit comments