rust/src/doc
bors ef91cdb140 Auto merge of #29973 - petrochenkov:privinpub, r=nikomatsakis
Some notes:
This patch enforces the rules from [RFC 136](https://github.com/rust-lang/rfcs/blob/master/text/0136-no-privates-in-public.md) and makes "private in public" a module-level concept and not crate-level. Only `pub` annotations are used by the new algorithm, crate-level exported node set produced by `EmbargoVisitor` is not used. The error messages are tweaked accordingly and don't use the word "exported" to avoid confusing people (https://github.com/rust-lang/rust/issues/29668).

The old algorithm tried to be extra smart with impls, but it mostly led to unpredictable behavior and bugs like https://github.com/rust-lang/rust/issues/28325.
The new algorithm tries to be as simple as possible - an impl is considered public iff its type is public and its trait is public (if presents).
A type or trait is considered public if all its components are public, [complications](https://internals.rust-lang.org/t/limits-of-type-inference-smartness/2919) with private types leaking to other crates/modules through trait impls and type inference are deliberately ignored so far.

The new algorithm is not recursive and uses the nice new facility `Crate::visit_all_items`!

Obsolete pre-1.0 feature `visible_private_types` is removed.

This is a [breaking-change].
The two main vectors of breakage are type aliases (https://github.com/rust-lang/rust/issues/28450) and impls (https://github.com/rust-lang/rust/issues/28325).
I need some statistics from a crater run (cc @alexcrichton) to decide on the breakage mitigation strategy.
UPDATE: All the new errors are reported as warnings controlled by a lint `private_in_public` and lint group `future_incompatible`, but the intent is to make them hard errors eventually.

Closes https://github.com/rust-lang/rust/issues/28325
Closes https://github.com/rust-lang/rust/issues/28450
Closes https://github.com/rust-lang/rust/issues/29524
Closes https://github.com/rust-lang/rust/issues/29627
Closes https://github.com/rust-lang/rust/issues/29668
Closes https://github.com/rust-lang/rust/issues/30055

r? @nikomatsakis
2015-12-18 18:54:52 +00:00
..
book Rollup merge of #30447 - Xmasreturns:Docu, r=steveklabnik 2015-12-18 20:02:14 +05:30
nomicon Change "big ask" to "tall order" in Rustonomicon. 2015-12-17 09:40:02 -08:00
style Fix double word 'be' 2015-11-08 09:39:01 -06:00
complement-design-faq.md Link to lazy_static crate in Design FAQ 2015-12-03 20:11:29 +01:00
complement-lang-faq.md fix tests & rustdoc 2015-11-26 18:22:40 +02:00
complement-project-faq.md We are production ready 2015-09-20 15:53:47 -04:00
favicon.inc Use https URLs to refer to rust-lang.org where appropriate. 2015-08-09 14:28:46 -07:00
footer.inc Convert playpen.js to plain JS. 2015-06-12 16:26:07 -04:00
full-toc.inc doc: add webfonts and tweak the styles accordingly 2014-04-19 21:25:35 +09:00
grammar.md Allow bare semicolon in grammar doc, closes #28157 2015-10-24 00:45:18 +02:00
guide-crates.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-error-handling.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-ffi.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-macros.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-ownership.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-plugins.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-pointers.md Change removal notice for pointer guide. 2015-06-29 15:18:00 -04:00
guide-strings.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-tasks.md Fix broken link in old rust guide 2015-03-04 23:18:24 +00:00
guide-testing.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide-unsafe.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
guide.md Grammar tweak to old guide stub documents. 2015-01-16 22:25:22 -05:00
index.md Minor tweaks to doc index 2015-11-16 11:48:18 -08:00
intro.md Remove the 30 minute intro 2015-04-18 17:55:31 -04:00
not_found.md Use https URLs to refer to rust-lang.org where appropriate. 2015-08-09 14:28:46 -07:00
README.md Fix path to TRPL in doc README 2015-11-30 15:00:30 -05:00
reference.md Rewrite VisiblePrivateTypesVisitor 2015-12-18 04:12:31 +03:00
rust.css Update the playpen link for code in the rust book to agree with rustdoc's new style 2015-10-25 16:18:55 -04:00
rust.md Update based on PR feedback 2014-09-30 18:54:03 +02:00
rustc-ux-guidelines.md Add rustc UX guidelines. 2015-11-08 13:23:18 +00:00
rustdoc.md Move rustdoc.md into the book 2015-01-21 14:59:25 -05:00
tutorial.md Re-direct to the right place. 2015-01-13 21:11:47 -05:00
uptack.tex Changed LaTex $\bot$s to ⊥ 2014-12-19 18:09:33 -05:00
version_info.html.template Use https URLs to refer to rust-lang.org where appropriate. 2015-08-09 14:28:46 -07:00

Rust documentations

Building

To generate all the docs, follow the "Building Documentation" instructions in the README in the root of the repository. This will convert the distributed Markdown docs to HTML and generate HTML doc for the books, 'std' and 'extra' libraries.

To generate HTML documentation from one source file/crate, do something like:

rustdoc --output html-doc/ --output-format html ../src/libstd/path.rs

(This, of course, requires a working build of the rustdoc tool.)

Additional notes

To generate an HTML version of a doc from Markdown manually, you can do something like:

rustdoc reference.md

(reference.md being the Rust Reference Manual.)

An overview of how to use the rustdoc command is available in the docs. Further details are available from the command line by with rustdoc --help.