The signature of set_current_string means that self will be permanently borrowed, and unusable after that.
Self-referential struct are not possible in safe rust.
As an illustration.... consider changing the current_string into an index for looking up in the vec. What should happen if the caller sets the current string index, and then the vec is modified?
References in rust have strong guarantees about their validity, which is why the compiler doesn't allow this pattern. Using an index, you need to consider the "vec changed" case, and figure out what that means for your use case.