pub struct Position { /* private fields */ }Expand description
A 1-based MCP position taken as input by Translator::handle_* methods.
Kept distinct from Position2D (which carries an output position back
to the caller) and made of two NonZeroU32s, so a zero position cannot
exist and a call site that swaps line and character still names them
(#322). A position typed by a client goes through Self::from_client,
the only fallible constructor; positions derived from server output
convert infallibly through Position::from_server_output.
§Examples
use mcpls_core::bridge::{InvalidPosition, Position};
let position = Position::from_client(3, 5)?;
assert_eq!((position.line().get(), position.character().get()), (3, 5));
assert_eq!(Position::from_client(0, 1), Err(InvalidPosition::ZeroBased));Implementations§
Source§impl Position
impl Position
Sourcepub const fn from_client(
line: u32,
character: u32,
) -> Result<Self, InvalidPosition>
pub const fn from_client( line: u32, character: u32, ) -> Result<Self, InvalidPosition>
Builds a position from client-supplied 1-based numbers.
§Errors
Returns InvalidPosition::ZeroBased for a zero line or character
and InvalidPosition::TooLarge above MAX_POSITION_VALUE.
Sourcepub const fn line(self) -> NonZeroU32
pub const fn line(self) -> NonZeroU32
Line number (1-based).
Sourcepub const fn character(self) -> NonZeroU32
pub const fn character(self) -> NonZeroU32
Character offset (1-based).
Sourcepub const fn lsp_character(self) -> u32
pub const fn lsp_character(self) -> u32
Zero-based character offset, still in UTF-16 units.
Trait Implementations§
impl Copy for Position
impl Eq for Position
impl StructuralPartialEq for Position
Auto Trait Implementations§
impl Freeze for Position
impl RefUnwindSafe for Position
impl Send for Position
impl Sync for Position
impl Unpin for Position
impl UnsafeUnpin for Position
impl UnwindSafe for Position
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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.