Quick actions

cmd+k|ctrl+k

Navigation

Languages

CharString

Snippet info

Language

Rust

Visibility

public

Author

danielmg17

Created

2020-02-25T21:54:20Z

Updated

2020-02-25T22:14:35Z

use std::fmt;
use std::ops::{Index,IndexMut};

#[derive(Debug)]
struct CharString {
    val: Vec<char>,
    len: usize
}
#[allow(non_snake_case)]
fn CharString (s: Vec<char>) -> CharString {
    let l = s.len();
    CharString{val: s, len: l}
}

impl fmt::Display for CharString {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let s: String = self.val.iter().collect();
        write!(f, "{}", s)
    }
}

impl Index<usize> for CharString {
    type Output = char;

    fn index(&self, index: usize) -> &Self::Output {
        &self.val[index]
    }
}

impl IndexMut<usize> for CharString {
    fn index_mut(&mut self, index: usize) -> &mut Self::Output {
        &mut self.val[index]
    }
}

fn main() {
    let cvec: CharString = CharString("λs.s".chars().collect());
    println!("{}", cvec);
    println!("{}", cvec[0]);
}
INFO