|
1 | 1 | #![warn(missing_docs)]
|
2 |
| -// N.B. requires nightly rustdoc to document until intra-doc links are stabilized. |
3 | 2 | //! Collect information that allows you to build a crate the same way that docs.rs would.
|
4 | 3 | //!
|
5 | 4 | //! This library is intended for use in docs.rs and crater, but might be helpful to others.
|
@@ -303,27 +302,28 @@ impl std::str::FromStr for Metadata {
|
303 | 302 | _ => None,
|
304 | 303 | };
|
305 | 304 |
|
306 |
| - fn table(mut manifest: Table, table_name: &str) -> Option<Table> { |
307 |
| - match manifest.remove(table_name) { |
| 305 | + fn table<'a>(manifest: &'a Table, table_name: &str) -> Option<&'a Table> { |
| 306 | + match manifest.get(table_name) { |
308 | 307 | Some(Value::Table(table)) => Some(table),
|
309 | 308 | _ => None,
|
310 | 309 | }
|
311 | 310 | }
|
312 | 311 |
|
313 | 312 | let plain_table = manifest
|
314 |
| - .clone() |
| 313 | + .as_ref() |
315 | 314 | .and_then(|t| table(t, "package"))
|
316 | 315 | .and_then(|t| table(t, "metadata"))
|
317 | 316 | .and_then(|t| table(t, "docs"))
|
318 | 317 | .and_then(|t| table(t, "rs"));
|
319 | 318 | let quoted_table = manifest
|
| 319 | + .as_ref() |
320 | 320 | .and_then(|t| table(t, "package"))
|
321 | 321 | .and_then(|t| table(t, "metadata"))
|
322 | 322 | .and_then(|t| table(t, "docs.rs"));
|
323 | 323 | let mut metadata = if let Some(table) = plain_table {
|
324 |
| - Value::Table(table).try_into()? |
| 324 | + Value::Table(table.clone()).try_into()? |
325 | 325 | } else if let Some(table) = quoted_table {
|
326 |
| - Value::Table(table).try_into()? |
| 326 | + Value::Table(table.clone()).try_into()? |
327 | 327 | } else {
|
328 | 328 | Metadata::default()
|
329 | 329 | };
|
|
0 commit comments