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

标签 rust

<分区>

我的 previous question告诉我 Rust 不能在结构中引用自身。

所以我的问题会变成:当我需要引用自身时如何设计一个结构体?

我们可以以这个结构为例:

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 提供了一个可迭代字符串拆分的接口(interface)。

(这只是一个例子,所以我想知道关于设计结构的更一般的想法,而不是专门针对这种拆分情况。此外,没有标准的拆分。)

最佳答案

你不能。 Rust 的迭代器不是为那样使用而设计的。重新排列,这样您不需要将字符串存储在迭代器中。它应该只是一个引用。

关于rust - 当我需要引用自身时如何设计结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31825650/

相关文章:

string - 返回引用新 &str 的结构

if-statement - 结果和 if/else/return 语句 E0308 错误

rust - 为什么 slice 可以直接调用 into_iter 而不会 abort?

curl - 在WSL上安装 rust

rust - 在 Rust 中,如何将具有生命周期的对象推送到向量中?

rust - 无法创建使用文字零的通用函数

rust - 我应该在哪里添加明确的生命周期界限?

linux - 如何在 Linux 下从特定接口(interface)发送 UDP 数据包?

enums - 如何使用毯式Into trait实现转换回原始类型?

sorting - 有没有办法在排序时提供多个键来打破平局?