use ropey::RopeSlice; pub trait RopeSliceExt: Sized { fn ends_with(self, text: &str) -> bool; fn starts_with(self, text: &str) -> bool; } impl RopeSliceExt for RopeSlice<'_> { fn ends_with(self, text: &str) -> bool { let len = self.len_bytes(); if len < text.len() { return false; } self.get_byte_slice(len - text.len()..) .map_or(false, |end| end == text) } fn starts_with(self, text: &str) -> bool { let len = self.len_bytes(); if len < text.len() { return false; } self.get_byte_slice(..len - text.len()) .map_or(false, |start| start == text) } }