Rustdoc İç İçe include! Değişikliği
Özet
Bir doctest include_str! ile içe alındığında, bu doctest kendi içinde ayrıca
include!, include_str! veya include_bytes! kullanıyorsa yol artık Rust
kaynak dosyasına göre değil, Markdown dosyasına göre çözülür.
Ayrıntılar
2024 sürümünden önce #[doc=include_str!("path/file.md")] ile belge eklemek,
o dosyadaki doctest’lere span bilgisini taşımıyordu. Sonuç olarak Markdown
dosyası kaynak dosyadan farklı bir dizindeyse, içe alınan yollar kaynak dosyaya
göre yazılmak zorundaydı.
Örneğin şu dosyalara sahip bir kütüphane crate’i düşünün:
Cargo.tomlREADME.mdsrc/lib.rs
examples/data.bin
lib.rs dosyasının şu içeriğe sahip olduğunu varsayalım:
#![doc=include_str!("../README.md")]
Ve README.md dosyası da şöyle olsun:
```
let _ = include_bytes!("../examples/data.bin");
// ^^^ buna dikkat edin
```
2024 sürümünden önce README.md içindeki yol, lib.rs dosyasına göre yazılmalıydı.
2024 ve sonrasında ise artık README.md dosyasının kendisine göre yazılır. Bu yüzden
README.md şu şekilde güncellenir:
```
let _ = include_bytes!("examples/data.bin");
```
Taşıma
Etkilenen doctest’lerdeki yolları dönüştüren otomatik bir taşıma yoktur. Doctest’lerinizden biri etkileniyorsa, yeni sürüme geçtikten sonra testleri derlerken buna benzer bir hata görürsünüz:
error: couldn't read `../examples/data.bin`: No such file or directory (os error 2)
--> src/../README.md:2:24
|
2 | let _ = include_bytes!("../examples/data.bin");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the macro `include_bytes` (in Nightly builds, run with -Z macro-backtrace for more info)
help: there is a file with the same name in a different directory
|
2 | let _ = include_bytes!("examples/data.bin");
| ~~~~~~~~~~~~~~~~~~~
Doctest’lerinizi Rust 2024’e taşımak için etkilenen tüm yolları, doctest’leri içeren dosyaya göre göreceli olacak şekilde güncelleyin.