#[non_exhaustive]pub enum SubprocessMode {
Command {
command: String,
args: Vec<String>,
},
Script {
interpreter: String,
body: String,
args: Vec<String>,
},
}Expand description
Execution strategy for a subprocess task.
| Variant | Fields |
|---|---|
Command | executable and arguments |
Script | interpreter, base64 body, arguments |
§Example
use base64::Engine;
use base64::engine::general_purpose::STANDARD as BASE64;
use solti_model::SubprocessMode;
let mode = SubprocessMode::Script {
interpreter: "bash".into(),
body: BASE64.encode("echo hello"),
args: vec![],
};
assert_eq!(mode.decode_body().unwrap(), "echo hello");Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Implementations§
Source§impl SubprocessMode
impl SubprocessMode
Sourcepub fn decode_body(&self) -> ModelResult<String>
pub fn decode_body(&self) -> ModelResult<String>
Decodes the script body as UTF-8.
Uses MAX_SCRIPT_BODY_BYTES as the decoded size limit.
§Errors
Returns ModelError::Invalid for command mode, invalid base64, non-UTF-8 data, an empty body, or an oversized body.
§Example
use base64::Engine;
use base64::engine::general_purpose::STANDARD as BASE64;
use solti_model::SubprocessMode;
let mode = SubprocessMode::Script {
interpreter: "bash".into(),
body: BASE64.encode("echo hello"),
args: vec![],
};
assert_eq!(mode.decode_body().unwrap(), "echo hello");Sourcepub fn decode_body_with_limit(&self, max_bytes: usize) -> ModelResult<String>
pub fn decode_body_with_limit(&self, max_bytes: usize) -> ModelResult<String>
Decodes the script body with a custom size limit.
Encoded size is checked before allocation.
§Errors
Returns ModelError::Invalid for command mode, invalid base64, non-UTF-8 data, an empty body, or a body larger than max_bytes.
§Example
use base64::Engine;
use base64::engine::general_purpose::STANDARD as BASE64;
use solti_model::SubprocessMode;
let mode = SubprocessMode::Script {
interpreter: "bash".into(),
body: BASE64.encode("echo hello"),
args: vec![],
};
assert!(mode.decode_body_with_limit(4).is_err());Sourcepub fn validate(&self) -> ModelResult<()>
pub fn validate(&self) -> ModelResult<()>
Validates the subprocess mode.
§Errors
Returns ModelError::Invalid for an empty command or interpreter, or for an invalid, non-UTF-8, or oversized script body.
§Example
use solti_model::SubprocessMode;
let mode = SubprocessMode::Command {
command: "echo".into(),
args: vec!["hello".into()],
};
mode.validate().unwrap();Trait Implementations§
Source§impl Clone for SubprocessMode
impl Clone for SubprocessMode
Source§fn clone(&self) -> SubprocessMode
fn clone(&self) -> SubprocessMode
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SubprocessMode
impl Debug for SubprocessMode
Source§impl<'de> Deserialize<'de> for SubprocessMode
impl<'de> Deserialize<'de> for SubprocessMode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for SubprocessMode
Source§impl JsonSchema for SubprocessMode
impl JsonSchema for SubprocessMode
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &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 PartialEq for SubprocessMode
impl PartialEq for SubprocessMode
Source§impl Serialize for SubprocessMode
impl Serialize for SubprocessMode
impl StructuralPartialEq for SubprocessMode
Auto Trait Implementations§
impl Freeze for SubprocessMode
impl RefUnwindSafe for SubprocessMode
impl Send for SubprocessMode
impl Sync for SubprocessMode
impl Unpin for SubprocessMode
impl UnsafeUnpin for SubprocessMode
impl UnwindSafe for SubprocessMode
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