Codex Handbook
exec-server/src/process_id.rs 74 lines
use std::borrow::Borrow;use std::fmt;use std::ops::Deref;use serde::Deserialize;use serde::Serialize;#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]#[serde(transparent)]pub struct ProcessId(String);impl ProcessId {    pub fn new(value: impl Into<String>) -> Self {        Self(value.into())    }    pub fn as_str(&self) -> &str {        &self.0    }    pub fn into_inner(self) -> String {        self.0    }}impl Deref for ProcessId {    type Target = str;    fn deref(&self) -> &Self::Target {        self.as_str()    }}impl Borrow<str> for ProcessId {    fn borrow(&self) -> &str {        self.as_str()    }}impl AsRef<str> for ProcessId {    fn as_ref(&self) -> &str {        self.as_str()    }}impl fmt::Display for ProcessId {    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {        self.0.fmt(f)    }}impl From<String> for ProcessId {    fn from(value: String) -> Self {        Self(value)    }}impl From<&str> for ProcessId {    fn from(value: &str) -> Self {        Self(value.to_string())    }}impl From<&String> for ProcessId {    fn from(value: &String) -> Self {        Self(value.clone())    }}impl From<ProcessId> for String {    fn from(value: ProcessId) -> Self {        value.0    }}