use crate::{
ElicitCommunicator, ElicitIntrospect, ElicitResult, Elicitation, ElicitationPattern,
PatternDetails, Prompt, TypeMetadata,
};
crate::default_style!(reqwest::Client => ClientStyle);
impl Prompt for reqwest::Client {
fn prompt() -> Option<&'static str> {
Some("HTTP client (auto-constructed with default settings)")
}
}
impl Elicitation for reqwest::Client {
type Style = ClientStyle;
#[tracing::instrument(skip(_communicator))]
async fn elicit<C: ElicitCommunicator>(_communicator: &C) -> ElicitResult<Self> {
tracing::debug!("Constructing reqwest::Client");
Ok(reqwest::Client::new())
}
fn kani_proof() -> proc_macro2::TokenStream {
crate::verification::proof_helpers::kani_trusted_opaque("client")
}
fn verus_proof() -> proc_macro2::TokenStream {
crate::verification::proof_helpers::verus_trusted_opaque("client")
}
fn creusot_proof() -> proc_macro2::TokenStream {
crate::verification::proof_helpers::creusot_trusted_opaque("client")
}
}
impl ElicitIntrospect for reqwest::Client {
fn pattern() -> ElicitationPattern {
ElicitationPattern::Primitive
}
fn metadata() -> TypeMetadata {
TypeMetadata {
type_name: "reqwest::Client",
description: Self::prompt(),
details: PatternDetails::Primitive,
}
}
}