rust – 当我需要引用自身时如何设计结构

我之前的问题告诉我,锈不能在结构中引用它自己.

using self in new constructor

所以我的问题将成为:当我需要引用自身时如何设计结构?

我们可以将此结构作为示例:

struct SplitByChars<'a> {
    seperator: &'a Seperator,
    string: String,
    chars_iter: std::str::Chars<'a>,
}

impl<'a> SplitByChars<'a> {
    fn new<S>(seperator: &'a Seperator, string: S) -> SplitByChars where S: Into<String> {
        SplitByChars {
            seperator: seperator,
            string: string.into(),
            chars_iter: self.string.chars(), // error here: I cannot use self (of course, static method)
        }
    }
}

我使用chars_iter来提供可迭代字符串拆分的接口.

(这只是一个例子,所以我想知道关于设计结构的更一般的想法,而不是特别在这个分裂的情况下.此外,没有std的分裂.)

Thx提前!

最佳答案 你不能. Rust的迭代器不是以这种方式使用的.重新排列事物,以便您不需要将字符串存储在迭代器中.它应该只有一个参考.

点赞