pub struct PositionEncodings(/* private fields */);Expand description
A non-empty position-encoding preference order, offered to each spawned
server as capabilities.general.positionEncodings during initialize.
Deserializes from a list of "utf-8", "utf-16" or "utf-32" strings and
rejects an empty list or any other value at load time.
§Examples
use mcpls_core::bridge::PositionEncoding;
use mcpls_core::config::PositionEncodings;
assert!(PositionEncodings::new(vec![]).is_err());
let encodings = PositionEncodings::new(vec![PositionEncoding::Utf32]).unwrap();
assert_eq!(encodings.as_slice(), [PositionEncoding::Utf32]);
assert_eq!(
PositionEncodings::DEFAULT.as_slice(),
[PositionEncoding::Utf8, PositionEncoding::Utf16]
);Implementations§
Source§impl PositionEncodings
impl PositionEncodings
Sourcepub const DEFAULT: Self
pub const DEFAULT: Self
utf-8 first, then utf-16.
utf-8 is listed first deliberately: rust-analyzer and clangd both
negotiate down to it, so the non-UTF-16 conversion path in
bridge/encoding.rs is the common case, not an edge case.
Sourcepub fn new(
encodings: Vec<PositionEncoding>,
) -> Result<Self, InvalidPositionEncodings>
pub fn new( encodings: Vec<PositionEncoding>, ) -> Result<Self, InvalidPositionEncodings>
Builds a preference order from encodings.
§Errors
Returns InvalidPositionEncodings::Empty for an empty list.
Sourcepub fn as_slice(&self) -> &[PositionEncoding]
pub fn as_slice(&self) -> &[PositionEncoding]
The encodings in preference order; never empty.
Trait Implementations§
Source§impl Clone for PositionEncodings
impl Clone for PositionEncodings
Source§impl Debug for PositionEncodings
impl Debug for PositionEncodings
Source§impl Default for PositionEncodings
impl Default for PositionEncodings
Source§impl<'de> Deserialize<'de> for PositionEncodings
impl<'de> Deserialize<'de> for PositionEncodings
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 PositionEncodings
Source§impl From<PositionEncodings> for Vec<PositionEncoding>
impl From<PositionEncodings> for Vec<PositionEncoding>
Source§fn from(encodings: PositionEncodings) -> Self
fn from(encodings: PositionEncodings) -> Self
Converts to this type from the input type.
Source§impl PartialEq for PositionEncodings
impl PartialEq for PositionEncodings
Source§impl Serialize for PositionEncodings
impl Serialize for PositionEncodings
impl StructuralPartialEq for PositionEncodings
Source§impl TryFrom<Vec<PositionEncoding>> for PositionEncodings
impl TryFrom<Vec<PositionEncoding>> for PositionEncodings
Auto Trait Implementations§
impl Freeze for PositionEncodings
impl RefUnwindSafe for PositionEncodings
impl Send for PositionEncodings
impl Sync for PositionEncodings
impl Unpin for PositionEncodings
impl UnsafeUnpin for PositionEncodings
impl UnwindSafe for PositionEncodings
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.