pub struct StringNonEmpty<const MAX_LEN: usize = 4096> { /* private fields */ }Expand description
Contract type for non-empty String values with bounded length.
Built on top of Utf8Bytes<N> foundation, adding non-empty constraint.
§Type Parameters
MAX_LEN- Maximum byte length (default: 4096)
§Invariants
- Content is valid UTF-8 (inherited from
Utf8Bytes) - Length is > 0 (non-empty)
- Length <= MAX_LEN (bounded)
Validates on construction, then can unwrap to stdlib String via into_inner().
Implementations§
Source§impl<const MAX_LEN: usize> StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> StringNonEmpty<MAX_LEN>
Sourcepub fn new(value: String) -> Result<Self, ValidationError>
pub fn new(value: String) -> Result<Self, ValidationError>
Constructs a non-empty, bounded String from stdlib String.
§Errors
Returns ValidationError if:
- String is empty
- String length exceeds MAX_LEN bytes
- String is not valid UTF-8 (should never happen for stdlib String)
Sourcepub fn into_inner(self) -> String
pub fn into_inner(self) -> String
Unwraps to stdlib String (trenchcoat off).
Trait Implementations§
Source§impl<const MAX_LEN: usize> Clone for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Clone for StringNonEmpty<MAX_LEN>
Source§fn clone(&self) -> StringNonEmpty<MAX_LEN>
fn clone(&self) -> StringNonEmpty<MAX_LEN>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const MAX_LEN: usize> Debug for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Debug for StringNonEmpty<MAX_LEN>
Source§impl<'de, const MAX_LEN: usize> Deserialize<'de> for StringNonEmpty<MAX_LEN>
impl<'de, const MAX_LEN: usize> Deserialize<'de> for StringNonEmpty<MAX_LEN>
Source§fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Self, D::Error>
Deserialize this value from the given Serde deserializer. Read more
Source§impl ElicitComplete for StringNonEmpty
impl ElicitComplete for StringNonEmpty
Source§fn validate_proofs_non_empty() -> bool
fn validate_proofs_non_empty() -> bool
Runtime check: all three proof methods return non-empty TokenStreams. Read more
Source§fn kani_proof_contains<Inner: Elicitation>() -> bool
fn kani_proof_contains<Inner: Elicitation>() -> bool
Runtime check: does this type’s Kani proof contain
Inner’s Kani proof? Read moreSource§fn verus_proof_contains<Inner: Elicitation>() -> bool
fn verus_proof_contains<Inner: Elicitation>() -> bool
Runtime check: does this type’s Verus proof contain
Inner’s Verus proof?Source§fn creusot_proof_contains<Inner: Elicitation>() -> bool
fn creusot_proof_contains<Inner: Elicitation>() -> bool
Runtime check: does this type’s Creusot proof contain
Inner’s Creusot proof?Source§impl<const MAX_LEN: usize> ElicitIntrospect for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> ElicitIntrospect for StringNonEmpty<MAX_LEN>
Source§fn pattern() -> ElicitationPattern
fn pattern() -> ElicitationPattern
What elicitation pattern does this type use? Read more
Source§fn metadata() -> TypeMetadata
fn metadata() -> TypeMetadata
Get the complete structural metadata for this type. Read more
Source§impl<const MAX_LEN: usize> ElicitPromptTree for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> ElicitPromptTree for StringNonEmpty<MAX_LEN>
Source§fn prompt_tree() -> PromptTree
fn prompt_tree() -> PromptTree
Return the static prompt tree for this type. Read more
Source§fn assembled_prompts() -> Vec<AssembledPrompt>
fn assembled_prompts() -> Vec<AssembledPrompt>
Return the complete assembled prompts in elicitation order. Read more
Source§impl ElicitSpec for StringNonEmpty
impl ElicitSpec for StringNonEmpty
Source§impl<const MAX_LEN: usize> Elicitation for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Elicitation for StringNonEmpty<MAX_LEN>
Source§async fn elicit<C: ElicitCommunicator>(communicator: &C) -> ElicitResult<Self>
async fn elicit<C: ElicitCommunicator>(communicator: &C) -> ElicitResult<Self>
Elicit a value of this type from the user via style-aware client. Read more
Source§fn kani_proof() -> TokenStream
fn kani_proof() -> TokenStream
Generate a Kani symbolic execution proof harness for this type. Read more
Source§fn verus_proof() -> TokenStream
fn verus_proof() -> TokenStream
Returns a
proc_macro2::TokenStream containing a Verus-verified function
with requires/ensures specifications for this type’s invariants. Read moreSource§fn creusot_proof() -> TokenStream
fn creusot_proof() -> TokenStream
Returns a
proc_macro2::TokenStream containing Creusot contract functions
with #[requires]/#[ensures]/#[trusted] attributes for this type’s invariants. Read moreSource§fn elicit_checked(
peer: Peer<RoleServer>,
) -> impl Future<Output = ElicitResult<Self>> + Send
fn elicit_checked( peer: Peer<RoleServer>, ) -> impl Future<Output = ElicitResult<Self>> + Send
Server-side elicitation via MCP peer. Read more
Source§fn with_style(style: Self::Style) -> ElicitBuilder<Self>
fn with_style(style: Self::Style) -> ElicitBuilder<Self>
Create a builder for one-off style override. Read more
Source§fn elicit_proven<C: ElicitCommunicator>(
communicator: &C,
) -> impl Future<Output = ElicitResult<(Self, Established<Is<Self>>)>> + Send
fn elicit_proven<C: ElicitCommunicator>( communicator: &C, ) -> impl Future<Output = ElicitResult<(Self, Established<Is<Self>>)>> + Send
Elicit a value with proof it inhabits type Self. Read more
Source§fn prusti_proof() -> TokenStream
fn prusti_proof() -> TokenStream
Returns a
proc_macro2::TokenStream containing Prusti contract functions
with #[requires]/#[ensures] attributes for this type’s invariants. Read moreSource§impl<const MAX_LEN: usize> Hash for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Hash for StringNonEmpty<MAX_LEN>
Source§impl<const MAX_LEN: usize> JsonSchema for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> JsonSchema for StringNonEmpty<MAX_LEN>
Source§fn json_schema(_gen: &mut SchemaGenerator) -> Schema
fn json_schema(_gen: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreSource§impl<const MAX_LEN: usize> PartialEq for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> PartialEq for StringNonEmpty<MAX_LEN>
Source§impl<const MAX_LEN: usize> Prompt for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Prompt for StringNonEmpty<MAX_LEN>
Source§impl<const MAX_LEN: usize> Serialize for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Serialize for StringNonEmpty<MAX_LEN>
Source§impl<const MAX_LEN: usize> ToCodeLiteral for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> ToCodeLiteral for StringNonEmpty<MAX_LEN>
Source§fn to_code_literal(&self) -> TokenStream
fn to_code_literal(&self) -> TokenStream
Return a
TokenStream containing a single Rust expression whose
evaluation produces a value equal to self.Source§fn type_tokens() -> TokenStreamwhere
Self: Sized,
fn type_tokens() -> TokenStreamwhere
Self: Sized,
Token stream for the concrete type name (used to annotate
None::<T>). Read moreimpl<const MAX_LEN: usize> Eq for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> StructuralPartialEq for StringNonEmpty<MAX_LEN>
Auto Trait Implementations§
impl<const MAX_LEN: usize> Freeze for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> RefUnwindSafe for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Send for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Sync for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> Unpin for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> UnsafeUnpin for StringNonEmpty<MAX_LEN>
impl<const MAX_LEN: usize> UnwindSafe for StringNonEmpty<MAX_LEN>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ElicitJson for T
impl<T> ElicitJson for T
Source§async fn elicit_json<C>(communicator: &C) -> Result<T, ElicitError>where
C: ElicitCommunicator,
async fn elicit_json<C>(communicator: &C) -> Result<T, ElicitError>where
C: ElicitCommunicator,
Elicit a value by presenting the JSON schema and parsing the response.
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> WithContract for T
impl<T> WithContract for T
Source§fn with_contract<C>(contract: C) -> ContractedElicitation<Self, C>
fn with_contract<C>(contract: C) -> ContractedElicitation<Self, C>
Attach a contract to this type’s elicitation. Read more