pub trait देवनागरीसूचीविस्तार<T> {
fn लम्बाई(&self) -> usize;
fn रिक्त_है(&self) -> bool;
fn प्रथम(&self) -> Option<&T>;
fn अंतिम(&self) -> Option<&T>;
fn समाविष्ट(&self, x: &T) -> bool where T: PartialEq;
}
impl<T> देवनागरीसूचीविस्तार<T> for Vec<T> {
fn लम्बाई(&self) -> usize { self.len() }
fn रिक्त_है(&self) -> bool { self.is_empty() }
fn प्रथम(&self) -> Option<&T> { self.first() }
fn अंतिम(&self) -> Option<&T> { self.last() }
fn समाविष्ट(&self, x: &T) -> bool where T: PartialEq { self.contains(x) }
}
impl<T> देवनागरीसूचीविस्तार<T> for [T] {
fn लम्बाई(&self) -> usize { self.len() }
fn रिक्त_है(&self) -> bool { self.is_empty() }
fn प्रथम(&self) -> Option<&T> { self.first() }
fn अंतिम(&self) -> Option<&T> { self.last() }
fn समाविष्ट(&self, x: &T) -> bool where T: PartialEq { self.contains(x) }
}
pub trait देवनागरीपाठविस्तार {
fn लम्बाई(&self) -> usize;
fn रिक्त_है(&self) -> bool;
fn बड़ेअक्षर(&self) -> String;
fn छोटेअक्षर(&self) -> String;
fn छाँटो(&self) -> &str;
fn समाविष्ट(&self, pat: &str) -> bool;
fn से_शुरू(&self, pat: &str) -> bool;
fn पर_समाप्त(&self, pat: &str) -> bool;
fn बदलो(&self, from: &str, to: &str) -> String;
fn विभाजित<'a>(&'a self, pat: &str) -> Vec<&'a str>;
fn अक्षर_संख्या(&self) -> usize;
}
impl देवनागरीपाठविस्तार for str {
fn लम्बाई(&self) -> usize { self.len() }
fn रिक्त_है(&self) -> bool { self.is_empty() }
fn बड़ेअक्षर(&self) -> String { self.to_uppercase() }
fn छोटेअक्षर(&self) -> String { self.to_lowercase() }
fn छाँटो(&self) -> &str { self.trim() }
fn समाविष्ट(&self, pat: &str) -> bool { self.contains(pat) }
fn से_शुरू(&self, pat: &str) -> bool { self.starts_with(pat) }
fn पर_समाप्त(&self, pat: &str) -> bool { self.ends_with(pat) }
fn बदलो(&self, from: &str, to: &str) -> String { self.replace(from, to) }
fn विभाजित<'a>(&'a self, pat: &str) -> Vec<&'a str> { self.split(pat).collect() }
fn अक्षर_संख्या(&self) -> usize { self.chars().count() }
}
impl देवनागरीपाठविस्तार for String {
fn लम्बाई(&self) -> usize { self.len() }
fn रिक्त_है(&self) -> bool { self.is_empty() }
fn बड़ेअक्षर(&self) -> String { self.to_uppercase() }
fn छोटेअक्षर(&self) -> String { self.to_lowercase() }
fn छाँटो(&self) -> &str { self.trim() }
fn समाविष्ट(&self, pat: &str) -> bool { self.contains(pat) }
fn से_शुरू(&self, pat: &str) -> bool { self.starts_with(pat) }
fn पर_समाप्त(&self, pat: &str) -> bool { self.ends_with(pat) }
fn बदलो(&self, from: &str, to: &str) -> String { self.replace(from, to) }
fn विभाजित<'a>(&'a self, pat: &str) -> Vec<&'a str> { self.split(pat).collect() }
fn अक्षर_संख्या(&self) -> usize { self.chars().count() }
}
pub trait देवनागरीइटरेटरविस्तार: Iterator + Sized {
fn गणना(self) -> usize { self.count() }
fn संग्रह<B: FromIterator<Self::Item>>(self) -> B { self.collect() }
fn योग<S>(self) -> S where S: std::iter::Sum<Self::Item> { self.sum() }
fn गुणनफल<P>(self) -> P where P: std::iter::Product<Self::Item> { self.product() }
fn अधिकतम(self) -> Option<Self::Item> where Self::Item: Ord { self.max() }
fn न्यूनतम(self) -> Option<Self::Item> where Self::Item: Ord { self.min() }
fn कोई<F: FnMut(Self::Item) -> bool>(mut self, f: F) -> bool { self.any(f) }
fn सभी<F: FnMut(Self::Item) -> bool>(mut self, f: F) -> bool { self.all(f) }
fn छानो<F>(self, f: F) -> std::iter::Filter<Self, F>
where F: FnMut(&Self::Item) -> bool { self.filter(f) }
fn रूपांतर<B, F>(self, f: F) -> std::iter::Map<Self, F>
where F: FnMut(Self::Item) -> B { self.map(f) }
fn समतलरूपांतर<U, F>(self, f: F) -> std::iter::FlatMap<Self, U, F>
where F: FnMut(Self::Item) -> U, U: IntoIterator { self.flat_map(f) }
fn लो(self, n: usize) -> std::iter::Take<Self> { self.take(n) }
fn छोड़ो(self, n: usize) -> std::iter::Skip<Self> { self.skip(n) }
fn क्रमांकित(self) -> std::iter::Enumerate<Self> { self.enumerate() }
fn झाँकने_योग्य(self) -> std::iter::Peekable<Self> { self.peekable() }
fn जोड़ो<U: IntoIterator>(self, other: U) -> std::iter::Zip<Self, U::IntoIter> { self.zip(other) }
fn जोड़_दो<U>(self, other: U) -> std::iter::Chain<Self, U::IntoIter>
where U: IntoIterator<Item = Self::Item> { self.chain(other) }
fn खोजो<F: FnMut(&Self::Item) -> bool>(mut self, f: F) -> Option<Self::Item> { self.find(f) }
fn स्थान<F: FnMut(Self::Item) -> bool>(mut self, f: F) -> Option<usize> { self.position(f) }
fn संकुचन<B, F: FnMut(B, Self::Item) -> B>(self, init: B, f: F) -> B { self.fold(init, f) }
fn प्रत्येक_हेतु<F: FnMut(Self::Item)>(self, f: F) { self.for_each(f) }
fn उलटो(self) -> std::iter::Rev<Self> where Self: DoubleEndedIterator { self.rev() }
}
impl<I: Iterator + Sized> देवनागरीइटरेटरविस्तार for I {}
pub trait देवनागरीविकल्पविस्तार<T> {
fn कुछ_है(&self) -> bool;
fn रिक्त_है(&self) -> bool;
fn खोलो(self) -> T;
fn या(self, default: T) -> T;
fn रूपांतर<U, F: FnOnce(T) -> U>(self, f: F) -> Option<U>;
}
impl<T> देवनागरीविकल्पविस्तार<T> for Option<T> {
fn कुछ_है(&self) -> bool { self.is_some() }
fn रिक्त_है(&self) -> bool { self.is_none() }
fn खोलो(self) -> T { self.unwrap() }
fn या(self, default: T) -> T { self.unwrap_or(default) }
fn रूपांतर<U, F: FnOnce(T) -> U>(self, f: F) -> Option<U> { self.map(f) }
}
pub trait देवनागरीफलविस्तार<T, E> {
fn ठीक_है(&self) -> bool;
fn त्रुटि_है(&self) -> bool;
fn खोलो(self) -> T where E: std::fmt::Debug;
fn या(self, default: T) -> T;
fn रूपांतर<U, F: FnOnce(T) -> U>(self, f: F) -> Result<U, E>;
}
impl<T, E> देवनागरीफलविस्तार<T, E> for Result<T, E> {
fn ठीक_है(&self) -> bool { self.is_ok() }
fn त्रुटि_है(&self) -> bool { self.is_err() }
fn खोलो(self) -> T where E: std::fmt::Debug { self.unwrap() }
fn या(self, default: T) -> T { self.unwrap_or(default) }
fn रूपांतर<U, F: FnOnce(T) -> U>(self, f: F) -> Result<U, E> { self.map(f) }
}