< 返回版块

二狗 发表于 2021-09-21 17:19

比如JS可以这样实现

String.prototype.countEx = function (sub) {
	let i = 0
	for (var v of this) {
		if (sub.exist(v)) i++
	}
	return i
}


"123145".countEx("1")

请问我用Rust应该如何实现,学了几天Rust。资料实在太少啦 是不是trait可以实现? 还请各位大老帮帮我~

评论区

写评论
Neutron3529 2021-09-22 02:49

学到了

我差点以为,“给标准库String增加个方法”的方法是上github提交PR

[哭笑不得.jpg]

--
👇
gwy15: 可以新定义一个 trait,然后 impl Trait for String

其他地方要用的时候就 use Trait;

作者 二狗 2021-09-21 18:04

听君一席话胜读十年书!谢谢您 按您的意思实现的,请问是否还需要改进?

pub trait StringEx {
    fn add(&self) -> String;
}

impl StringEx for String {
    fn add(&self) -> String {
        let mut x = self.to_string();
        x.push_str("test");
        return x;
    }
}

fn main() {
    let str = String::from("str ").add();
    println!("{}", str);
}

--
👇
gwy15: 可以新定义一个 trait,然后 impl Trait for String

其他地方要用的时候就 use Trait;

gwy15 2021-09-21 17:25

可以新定义一个 trait,然后 impl Trait for String

其他地方要用的时候就 use Trait;

1 共 3 条评论, 1 页