1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rust で依存先のソースを勝手に書き換える

Posted at

目的

Rust で依存しているクレートに(自分にとっての)不都合があった時、勝手に書き換える方法を紹介します。

使用例:勝手に feature を追加したい、一部の不要なコードを消したい

ほとんど以下の公式ドキュメントに書いてあります。

直接依存している場合

自分の Cargo.toml で直接依存先として指定している場合。

  1. 依存先のリポジトリを fork か clone する
  2. 好きに書き換える
    • fork した場合は commit&push も
  3. 自分の Cargo.tomldependency セクションを編集する
    • before: クレート名 = "バージョン"
    • after (fork): クレート名 = { git = "https://github.com/フォーク先のURL.git" }
      • ブランチを変えたければ , branch = ブランチ名 で指定
    • after (clone): クレート名 = { path = "クローンしたパス" }
  4. おわり

間接的に依存している場合

自分の Cargo.toml で直接指定した依存先の、そのまた依存先のクレートを書き換えたい場合。

↑の方法を再帰的に行うこともできるが、手間がかかるので。

  1. 依存先のリポジトリを fork か clone する
  2. 好きに書き換える
    • fork した場合は commit&push も
    • (ここまでは同じ)
  3. 自分の Cargo.toml[patch.crates-io] セクションを追加する
    • ここで、各クレートの依存解決をする時の参照先を書き換えられる
  4. dependency と同様に、書き換え元・先を指定する
    • fork: クレート名 = { git = "https://github.com/フォーク先のURL.git" }
      • ブランチを変えたければ , branch = ブランチ名 で指定
    • clone: クレート名 = { path = "クローンしたパス" }
  5. おわり

まとめ

Pull Request を出せばいい話なんですが、

  • ハッカソンや研究の実装だとコミュニケーションの時間・時間が惜しい
  • 自分だけに必要でマージしてもらうほどではない

ようなケースが個人的にはよくあります。

そんなわけで、無理やり書き換える方法を備忘録的に説明しました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?