質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

解決済

match式のライフタイムについて

NOK0227
NOK0227

総合スコア18

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

1回答

0評価

0クリップ

129閲覧

投稿2022/07/02 13:24

前提

tauriを使ってフロントエンドがjs(vue.js)、バックエンド(Rust)のデスクトップアプリを作成してます。
Rustについてはまったくの初学者で初歩の初歩でつまずいてます。

実現したいこと

exeファイルのフルパスをstd::path::Pathの型で取得したいです。
最終的には「[exeファイルのディレクトリ]/tasklist/tasklist.csv」のフルパスを上記のexeファイルのフルパスから生成したいと思ってます。

発生している問題・エラーメッセージ

こちらのコードを実行しようとすると

Rust

fn read_task_list() { //get task list filepath let exe_pash: &Path = match std::env::current_exe() { Ok(path) => path.as_path(), Err(_e) => Path::new("./"), };

このようなエラーが出ます。
path変数のライフタイムがOk(path) => path.as_path(),で終わってしまうのに外側の変数に値を代入しようとしてるからだと思います。(Rustの用語とちょこちょこ異なっているかもしれませんが無視してください。)

error[E0597]: `path` does not live long enough --> src\main.rs:31:17 | 30 | let exe_pash: &Path = match std::env::current_exe() { | _________________________- 31 | | Ok(path) => path.as_path(), | | ^^^^^^^^^^^^^- | | | | | | | `path` dropped here while still borrowed | | borrowed value does not live long enough 32 | | Err(_e) => Path::new("./"), 33 | | }; | |___- borrow later used here For more information about this error, try `rustc --explain E0597`.

こちらの問題を回避する方法を教えていただきたいです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。