TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Rust: 匿名ライフタイム

structにライフタイム付けたらimpl側でもライフタイムが必要です。
その時のライフタイムの記述は匿名ライフタイムとして記述できるようです。(Rust 2018)

現象

struct SysConfig<'a> {
    dir: String,
    extension: String,
    blacklist: &'a Vec<String>,
}

impl SysConfig {
    fn parse(&self) {

    }
}

上記のようなコードを書くとimpl側でもライフタイムの指定が必要なので、以下のようなエラーがでます。

struct SysConfig<'a>
implicit elided lifetime not allowed here

help: indicate the anonymous lifetime: `<'_>`

解決方法

impl SysConfig<'_> {
    fn parse(&self) {

    }
}

エラ〜メッセージの通り記述してあげれば、直ります。
以下に匿名ライフタイムの記述がありました。(Anonymous Lifetime)
'_, the anonymous lifetime - The Edition Guide

ここによると推測可能なのでライフタイムは_(アンダースコア)で記述できると書いてあります。

もし、明示的に書く場合は以下のような記述になります。

impl<'a> SysConfig<'a> {
    fn parse(&self) {

    }
}

(2個書かないといけない・・・)

感想

ライフタイムの記述を簡略できるイメージで良い?