pub struct WaitHuman { /* private fields */ }Expand description
Main WaitHuman client for making requests
Implementations§
Source§impl WaitHuman
impl WaitHuman
Sourcepub fn new_from_key<S: Into<String>>(api_key: S) -> Result<Self>
pub fn new_from_key<S: Into<String>>(api_key: S) -> Result<Self>
Creates a new WaitHuman client from just an API key
This is a convenience wrapper around WaitHuman::new() that uses the default endpoint.
§Arguments
api_key- Your WaitHuman API key
§Errors
Returns an error if the API key is empty
§Example
use wait_human::WaitHuman;
let client = WaitHuman::new_from_key("your-api-key")?;Examples found in repository?
examples/demo.rs (line 6)
4async fn main() -> Result<(), Box<dyn std::error::Error>> {
5 let wait_human =
6 WaitHuman::new_from_key("sk_3a3b8e8e4bdfd121288cb995d41361042337ef6cada0e48d")?;
7
8 // Example: Multiple Choice Question
9 let answer = wait_human
10 .ask_multiple_choice(
11 "Send invoice?",
12 ["yes, send", "no"],
13 Some("Customer asked for a 3-page website. is 500$ ok?"),
14 None,
15 )
16 .await?;
17
18 if answer == "yes, send" {
19 println!("Send!");
20 } else {
21 println!("wait...");
22 }
23
24 // Example: Free Text
25 let feedback = wait_human
26 .ask_free_text(
27 "User Feedback",
28 Some("Please explain why you rejected the invoice."),
29 None,
30 )
31 .await?;
32
33 println!("{}", feedback);
34
35 Ok(())
36}Sourcepub fn new(config: WaitHumanConfig) -> Result<Self>
pub fn new(config: WaitHumanConfig) -> Result<Self>
Sourcepub async fn ask(
&self,
question: ConfirmationQuestion,
options: Option<AskOptions>,
) -> Result<ConfirmationAnswerWithDate>
pub async fn ask( &self, question: ConfirmationQuestion, options: Option<AskOptions>, ) -> Result<ConfirmationAnswerWithDate>
Sourcepub async fn ask_free_text<S, B>(
&self,
subject: S,
body: Option<B>,
options: Option<AskOptions>,
) -> Result<String>
pub async fn ask_free_text<S, B>( &self, subject: S, body: Option<B>, options: Option<AskOptions>, ) -> Result<String>
Convenience method for free-text questions
§Arguments
subject- The question subject/titlebody- Optional detailed question bodyoptions- Optional settings like timeout
§Errors
Returns an error if:
- The request fails or times out
- The answer type doesn’t match (not free text)
Examples found in repository?
examples/demo.rs (lines 26-30)
4async fn main() -> Result<(), Box<dyn std::error::Error>> {
5 let wait_human =
6 WaitHuman::new_from_key("sk_3a3b8e8e4bdfd121288cb995d41361042337ef6cada0e48d")?;
7
8 // Example: Multiple Choice Question
9 let answer = wait_human
10 .ask_multiple_choice(
11 "Send invoice?",
12 ["yes, send", "no"],
13 Some("Customer asked for a 3-page website. is 500$ ok?"),
14 None,
15 )
16 .await?;
17
18 if answer == "yes, send" {
19 println!("Send!");
20 } else {
21 println!("wait...");
22 }
23
24 // Example: Free Text
25 let feedback = wait_human
26 .ask_free_text(
27 "User Feedback",
28 Some("Please explain why you rejected the invoice."),
29 None,
30 )
31 .await?;
32
33 println!("{}", feedback);
34
35 Ok(())
36}Sourcepub async fn ask_multiple_choice<S, B, C>(
&self,
subject: S,
choices: C,
body: Option<B>,
options: Option<AskOptions>,
) -> Result<String>
pub async fn ask_multiple_choice<S, B, C>( &self, subject: S, choices: C, body: Option<B>, options: Option<AskOptions>, ) -> Result<String>
Convenience method for multiple-choice questions (single selection)
§Arguments
subject- The question subject/titlechoices- Available choices for the user to select frombody- Optional detailed question bodyoptions- Optional settings like timeout
§Errors
Returns an error if:
- The request fails or times out
- The answer type doesn’t match (not options)
- The selected index is invalid
Examples found in repository?
examples/demo.rs (lines 10-15)
4async fn main() -> Result<(), Box<dyn std::error::Error>> {
5 let wait_human =
6 WaitHuman::new_from_key("sk_3a3b8e8e4bdfd121288cb995d41361042337ef6cada0e48d")?;
7
8 // Example: Multiple Choice Question
9 let answer = wait_human
10 .ask_multiple_choice(
11 "Send invoice?",
12 ["yes, send", "no"],
13 Some("Customer asked for a 3-page website. is 500$ ok?"),
14 None,
15 )
16 .await?;
17
18 if answer == "yes, send" {
19 println!("Send!");
20 } else {
21 println!("wait...");
22 }
23
24 // Example: Free Text
25 let feedback = wait_human
26 .ask_free_text(
27 "User Feedback",
28 Some("Please explain why you rejected the invoice."),
29 None,
30 )
31 .await?;
32
33 println!("{}", feedback);
34
35 Ok(())
36}Trait Implementations§
Auto Trait Implementations§
impl Freeze for WaitHuman
impl !RefUnwindSafe for WaitHuman
impl Send for WaitHuman
impl Sync for WaitHuman
impl Unpin for WaitHuman
impl !UnwindSafe for WaitHuman
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more