Rebrand to Galaxy, major improvements to Bedrock support, still needs some TLC though
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
//! This module defines CharOrStr, a wrapper struct to deal with cases where we can have either a
|
||||
//! char or a string. For example, this is used for Cells in Grids where we can have either just a char
|
||||
//! (normal case) or a String (when we have zerowidth characters in a Cell). This structure helps abstract
|
||||
//! away a clean API for dealing with both cases.
|
||||
use std::fmt::{Display, Formatter};
|
||||
|
||||
/// Helper enum to represent either a char or a string, with corresponding API.
|
||||
#[derive(Debug, PartialEq, Copy, Clone)]
|
||||
pub enum CharOrStr<'a> {
|
||||
Char(char),
|
||||
Str(&'a str),
|
||||
}
|
||||
|
||||
pub trait PushCharOrStr {
|
||||
fn push_char_or_str(&mut self, c: CharOrStr);
|
||||
}
|
||||
|
||||
impl PushCharOrStr for String {
|
||||
fn push_char_or_str(&mut self, c: CharOrStr) {
|
||||
match c {
|
||||
CharOrStr::Char(c) => self.push(c),
|
||||
CharOrStr::Str(s) => self.push_str(s),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for CharOrStr<'_> {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
CharOrStr::Char(c) => write!(f, "{c}"),
|
||||
CharOrStr::Str(s) => write!(f, "{s}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user