Skip to main content

ServerConnectionString

Struct ServerConnectionString 

Source
pub struct ServerConnectionString(/* private fields */);
Expand description

Validated MCP server connection string.

Ensures server identifiers are non-empty and contain only valid characters. This prevents command injection and path traversal attacks.

§Security

  • Rejects empty strings
  • Rejects strings with null bytes
  • Trims whitespace

§Examples

use mcp_execution_core::cli::ServerConnectionString;

let conn = ServerConnectionString::new("github").unwrap();
assert_eq!(conn.as_str(), "github");

// Empty strings are rejected
assert!(ServerConnectionString::new("").is_err());

// Whitespace is trimmed
let conn = ServerConnectionString::new("  server  ").unwrap();
assert_eq!(conn.as_str(), "server");

Implementations§

Source§

impl ServerConnectionString

Source

pub fn new(s: impl Into<String>) -> Result<Self>

Creates a new validated server connection string.

§Security

This function validates input to prevent command injection attacks:

  • Only allows alphanumeric characters and -_./: for safe server identifiers
  • Rejects shell metacharacters (&, |, ;, $, `, etc.)
  • Rejects control characters to prevent CRLF injection
  • Length limited to 256 characters
§Errors

Returns an error if:

  • The string is empty after trimming
  • The string contains invalid characters
  • The string contains control characters
  • The string exceeds 256 characters
§Examples
use mcp_execution_core::cli::ServerConnectionString;

let conn = ServerConnectionString::new("my-server")?;
assert_eq!(conn.as_str(), "my-server");

// Shell metacharacters are rejected for security
assert!(ServerConnectionString::new("server && rm -rf /").is_err());
Source

pub fn as_str(&self) -> &str

Returns the connection string as a string slice.

§Examples
use mcp_execution_core::cli::ServerConnectionString;

let conn = ServerConnectionString::new("server")?;
assert_eq!(conn.as_str(), "server");

Trait Implementations§

Source§

impl Clone for ServerConnectionString

Source§

fn clone(&self) -> ServerConnectionString

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ServerConnectionString

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ServerConnectionString

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for ServerConnectionString

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for ServerConnectionString

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ServerConnectionString

Source§

fn eq(&self, other: &ServerConnectionString) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ServerConnectionString

Source§

impl StructuralPartialEq for ServerConnectionString

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.