pub struct MorseCustom { /* private fields */ }
Expand description
§Custom language Morse Code (feature).
Implementations§
Source§impl MorseCustom
impl MorseCustom
Sourcepub fn new(
from_char: fn(char) -> MorseResult<Vec<MorseUnit>>,
into_char: fn(Vec<MorseUnit>) -> MorseResult<char>,
) -> MorseCustom
pub fn new( from_char: fn(char) -> MorseResult<Vec<MorseUnit>>, into_char: fn(Vec<MorseUnit>) -> MorseResult<char>, ) -> MorseCustom
Creates custom language Morse Code struct.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let morse_ua = MorseCustom::new(from_char, into_char);
Sourcepub fn dot_as(&mut self, alias: &str)
pub fn dot_as(&mut self, alias: &str)
Creates alias for dot in output string.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new(from_char, into_char);
morse.parse_text("ба").unwrap();
morse.dot_as("🔥");
assert_eq!(morse.to_string(), "⚊ 🔥 🔥 🔥 🔥 ⚊");
Sourcepub fn line_as(&mut self, alias: &str)
pub fn line_as(&mut self, alias: &str)
Creates alias for line in output string.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new( from_char, into_char);
morse.parse_text("ба").unwrap();
morse.line_as("➖");
assert_eq!(morse.to_string(), "➖ . . . . ➖");
Sourcepub fn whitespace_as(&mut self, alias: &str)
pub fn whitespace_as(&mut self, alias: &str)
Creates alias for whitespace in output string.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new( from_char, into_char);
morse.parse_text("б а").unwrap();
morse.whitespace_as("🚧");
assert_eq!(morse.to_string(), "⚊ . . . 🚧 . ⚊");
Sourcepub fn to_beep(&self)
pub fn to_beep(&self)
Play sound that represent Morse Code.
Only available if “audio” feature is enabled.
Sourcepub fn frequency(&mut self, frequency: f32)
pub fn frequency(&mut self, frequency: f32)
Set sound frequency in MHz.
Only available if “audio” feature is enabled.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new(from_char, into_char);
morse.parse_text("б а").unwrap();
morse.frequency(643.0);
Sourcepub fn play_speed(&mut self, speed: f32)
pub fn play_speed(&mut self, speed: f32)
Set sound speed.
Only available if “audio” feature is enabled.
- ‘1’ - normal speed
- ‘> 1’ - faster
- ‘< 1’ - slower
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new( from_char, into_char);
morse.parse_text("б а").unwrap();
morse.play_speed(2.0);
Sourcepub fn to_bin_str(&self) -> String
pub fn to_bin_str(&self) -> String
Creates binary-formatted Morse Code.
§Examples
use morse_lib::{MorseCustom, MorseUnit, MorseError, MorseResult, TMorse};
use MorseUnit::{Dot, Line, Whitespace};
fn from_char(letter: char) -> MorseResult<Vec<MorseUnit>>{
match letter {
'а' | 'А' => Ok(vec![Dot, Line]),
'б' | 'Б' => Ok(vec![Line, Dot, Dot, Dot]),
'в' | 'В' => Ok(vec![Dot, Line, Line]),
'г' | 'Г' => Ok(vec![Dot, Dot, Dot, Dot]),
' ' => Ok(vec![Whitespace]),
_ => Err(MorseError::InvalidChar)
}
}
fn into_char(letter: Vec<MorseUnit>) -> MorseResult<char> {
if letter.len() == 1 && letter[0] == Whitespace {
return Ok(' ');
} else if letter.len() == 2 && letter[0] == Dot && letter[1] == Line {
return Ok('а')
} else if letter.len() == 3 && letter[0] == Dot && letter[1] == Line && letter[2] == Line {
return Ok('в');
} else if letter.len() == 4 {
if letter[0] == Line && letter[1] == Dot && letter[2] == Dot && letter[3] == Dot {
return Ok('б');
} else {
return Ok('г');
}
} else {
Err(MorseError::InvalidMorseSequence)
}
}
let mut morse = MorseCustom::new(from_char, into_char);
morse.parse_text("б а").unwrap();
assert_eq!(morse.to_bin_str(),"111010101000000010111");
pub fn iter(&self) -> MorseIterator<'_>
Trait Implementations§
Source§impl Clone for MorseCustom
impl Clone for MorseCustom
Source§fn clone(&self) -> MorseCustom
fn clone(&self) -> MorseCustom
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for MorseCustom
impl Debug for MorseCustom
Source§impl Index<usize> for MorseCustom
impl Index<usize> for MorseCustom
Source§impl IntoIterator for MorseCustom
impl IntoIterator for MorseCustom
Source§impl PartialEq for MorseCustom
impl PartialEq for MorseCustom
Source§impl TMorse for MorseCustom
impl TMorse for MorseCustom
Source§fn parse_text(&mut self, text: &str) -> MorseResult<()>
fn parse_text(&mut self, text: &str) -> MorseResult<()>
Parse text into Morse Code.
Source§impl ToString for MorseCustom
impl ToString for MorseCustom
impl StructuralPartialEq for MorseCustom
Auto Trait Implementations§
impl Freeze for MorseCustom
impl RefUnwindSafe for MorseCustom
impl Send for MorseCustom
impl Sync for MorseCustom
impl Unpin for MorseCustom
impl UnwindSafe for MorseCustom
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