pub struct DocumentStateDTO {
pub URI: Url,
pub LanguageIdentifier: String,
pub Version: i64,
pub Lines: Vec<String>,
pub EOL: String,
pub IsDirty: bool,
pub Encoding: String,
pub VersionIdentifier: i64,
}Expand description
Represents the complete in-memory state of a single text document.
Fields§
§URI: UrlThe unique resource identifier for this document.
LanguageIdentifier: StringThe VS Code language identifier (e.g., “rust”, “typescript”).
Version: i64The version number, incremented on each change from the client.
Lines: Vec<String>The content of the document, split into lines.
EOL: StringThe detected end-of-line sequence (e.g., \n or \r\n).
IsDirty: boolA flag indicating if the in-memory version has unsaved changes.
Encoding: StringThe detected file encoding (e.g., “utf8”).
VersionIdentifier: i64An internal version number, used for tracking changes within the host.
Implementations§
Source§impl DocumentStateDTO
impl DocumentStateDTO
Sourcepub fn Create(
URI: Url,
LanguageIdentifier: Option<String>,
Content: String,
) -> Result<Self, CommonError>
pub fn Create( URI: Url, LanguageIdentifier: Option<String>, Content: String, ) -> Result<Self, CommonError>
Creates a new DocumentStateDTO from its initial content with
validation.
§Arguments
URI- The document resource URILanguageIdentifier- Optional language ID for syntax highlightingContent- The initial document content
§Returns
Result containing the DTO or an error if validation fails
§Errors
Returns CommonError if:
- Language identifier exceeds maximum length
- Document exceeds maximum line count
- Any line exceeds maximum length
- URI is empty
Sourcepub fn CreateUnsafe(
URI: Url,
LanguageIdentifier: String,
Lines: Vec<String>,
EOL: String,
IsDirty: bool,
Encoding: String,
Version: i64,
VersionIdentifier: i64,
) -> Self
pub fn CreateUnsafe( URI: Url, LanguageIdentifier: String, Lines: Vec<String>, EOL: String, IsDirty: bool, Encoding: String, Version: i64, VersionIdentifier: i64, ) -> Self
Creates a new DocumentStateDTO without validation for internal use.
This should only be called with trusted data sources.
Sourcepub fn GetText(&self) -> String
pub fn GetText(&self) -> String
Reconstructs the full text content of the document from its lines.
Sourcepub fn ToDTO(&self) -> Result<Value, CommonError>
pub fn ToDTO(&self) -> Result<Value, CommonError>
Converts the struct to a serde_json::Value, useful for notifications.
Sourcepub fn ApplyChanges(
&mut self,
NewVersion: i64,
ChangesValue: &Value,
) -> Result<(), CommonError>
pub fn ApplyChanges( &mut self, NewVersion: i64, ChangesValue: &Value, ) -> Result<(), CommonError>
Applies a set of changes to the document. This can be a full text replacement or a collection of delta changes.
Trait Implementations§
Source§impl Clone for DocumentStateDTO
impl Clone for DocumentStateDTO
Source§fn clone(&self) -> DocumentStateDTO
fn clone(&self) -> DocumentStateDTO
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DocumentStateDTO
impl Debug for DocumentStateDTO
Source§impl<'de> Deserialize<'de> for DocumentStateDTO
impl<'de> Deserialize<'de> for DocumentStateDTO
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>,
Auto Trait Implementations§
impl Freeze for DocumentStateDTO
impl RefUnwindSafe for DocumentStateDTO
impl Send for DocumentStateDTO
impl Sync for DocumentStateDTO
impl Unpin for DocumentStateDTO
impl UnsafeUnpin for DocumentStateDTO
impl UnwindSafe for DocumentStateDTO
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
impl<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
§fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].