使用同一结构的另一个字段初始化结构的字段

时间:2015-08-03 18:41:39

标签: rust

下面我有一个结构SplitByChars

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: I cannot use self here!
        }
    }
}

我正在尝试为它实现new静态函数。特别是,我想返回一个SplitByChars实例,其chars_iter字段使用同一实例的先前初始化的string字段进行初始化。为此,我目前正在尝试使用self.string访问相同的字段,但我收到错误。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

  

我该怎么做?

你做不到。除非我误解了你的问题,否则这与this one的问题相同。结构通常不能引用自己。

答案 1 :(得分:-1)

我认为你让事情变得过于复杂。在特定字符处拆分字符串可以通过以下方式完成:

Projects

输出:

let s: String = "Tiger in the snow".into();
for e in s.split(|c| c == 'e') {
    println!("{}", e);
}

分割功能有多种变体可以满足各种需求。