about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-09-05 12:39:16 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-09-05 12:39:16 -0700
commit10c533861b38cf7c0533d3e28529bb49c917d2eb (patch)
tree7aee7e6071c395c87dc9cb630d999b7615772615
parentf686896f60d901fd7f97add72fbc047691027baa (diff)
doc: "import" -> "use"
-rw-r--r--doc/rust.md67
-rw-r--r--doc/tutorial-ffi.md8
-rw-r--r--doc/tutorial.md60
3 files changed, 68 insertions, 67 deletions
diff --git a/doc/rust.md b/doc/rust.md
index 3f368a6c06e..20f25c8c2b4 100644
--- a/doc/rust.md
+++ b/doc/rust.md
@@ -203,7 +203,7 @@ grammar as double-quoted strings. Other tokens have exact rules given.
 The keywords in [crate files](#crate-files) are the following strings:
 
 ~~~~~~~~ {.keyword}
-import export use mod
+export use mod
 ~~~~~~~~
 
 The keywords in [source files](#source-files) are the following strings:
@@ -215,7 +215,7 @@ check const copy
 drop
 else enum export extern
 fail false fn for
-if impl import
+if impl
 let log loop
 match mod mut
 pure
@@ -447,7 +447,7 @@ expression context, the final namespace qualifier is omitted.
 Two examples of paths with type arguments:
 
 ~~~~
-# import std::map;
+# use std::map;
 # fn f() {
 # fn id<T:copy>(t: T) -> T { t }
 type t = map::hashmap<int,~str>;  // Type arguments used in a type expression
@@ -619,8 +619,8 @@ or a *configuration* in Mesa.] A crate file describes:
   and copyright. These are used for linking, versioning and distributing
   crates.
 * The source-file and directory modules that make up the crate.
-* Any `use`, `import` or `export` [view items](#view-items) that apply to the
-  anonymous module at the top-level of the crate's module tree.
+* Any `use`, `extern mod` or `export` [view items](#view-items) that apply to
+  the anonymous module at the top-level of the crate's module tree.
 
 An example of a crate file:
 
@@ -636,7 +636,7 @@ An example of a crate file:
    author = "Jane Doe" ];
 
 // Import a module.
-use std (ver = "1.0");
+extern mod std (ver = "1.0");
 
 // Define some modules.
 #[path = "foo.rs"]
@@ -767,28 +767,28 @@ mod math {
 #### View items
 
 ~~~~~~~~ {.ebnf .gram}
-view_item : use_decl | import_decl | export_decl ;
+view_item : extern_mod_decl | use_decl | export_decl ;
 ~~~~~~~~
 
 A view item manages the namespace of a module; it does not define new items
 but simply changes the visibility of other items. There are several kinds of
 view item:
 
+ * [extern mod declarations](#extern-mod-declarations)
  * [use declarations](#use-declarations)
- * [import declarations](#import-declarations)
  * [export declarations](#export-declarations)
 
-##### Use declarations
+##### Extern mod declarations
 
 ~~~~~~~~ {.ebnf .gram}
-use_decl : "use" ident [ '(' link_attrs ')' ] ? ;
+extern_mod_decl : "extern" "mod" ident [ '(' link_attrs ')' ] ? ;
 link_attrs : link_attr [ ',' link_attrs ] + ;
 link_attr : ident '=' literal ;
 ~~~~~~~~
 
-A _use declaration_ specifies a dependency on an external crate. The external
-crate is then imported into the declaring scope as the `ident` provided in the
-`use_decl`.
+An _extern mod declaration_ specifies a dependency on an external crate. The
+external crate is then imported into the declaring scope as the `ident`
+provided in the `extern_mod_decl`.
 
 The external crate is resolved to a specific `soname` at compile time, and a
 runtime linkage requirement to that `soname` is passed to the linker for
@@ -798,51 +798,52 @@ compiler's library path and matching the `link_attrs` provided in the
 crate when it was compiled. If no `link_attrs` are provided, a default `name`
 attribute is assumed, equal to the `ident` given in the `use_decl`.
 
-Two examples of `use` declarations:
+Two examples of `extern mod` declarations:
 
 ~~~~~~~~{.xfail-test}
-use pcre (uuid = "54aba0f8-a7b1-4beb-92f1-4cf625264841");
+extern mod pcre (uuid = "54aba0f8-a7b1-4beb-92f1-4cf625264841");
 
-use std; // equivalent to: use std ( name = "std" );
+extern mod std; // equivalent to: extern mod std ( name = "std" );
 
-use ruststd (name = "std"); // linking to 'std' under another name
+extern mod ruststd (name = "std"); // linking to 'std' under another name
 ~~~~~~~~
 
-##### Import declarations
+##### Use declarations
 
 ~~~~~~~~ {.ebnf .gram}
-import_decl : "import" ident [ '=' path
-                             | "::" path_glob ] ;
+use_decl : "use" ident [ '=' path
+                          | "::" path_glob ] ;
 
 path_glob : ident [ "::" path_glob ] ?
           | '*'
           | '{' ident [ ',' ident ] * '}'
 ~~~~~~~~
 
-An _import declaration_ creates one or more local name bindings synonymous
-with some other [path](#paths). Usually an import declaration is used to
+A _use declaration_ creates one or more local name bindings synonymous
+with some other [path](#paths). Usually an use declaration is used to
 shorten the path required to refer to a module item.
 
-*Note*: unlike many languages, Rust's `import` declarations do *not* declare
+*Note*: unlike many languages, Rust's `use` declarations do *not* declare
 linkage-dependency with external crates. Linkage dependencies are
-independently declared with [`use` declarations](#use-declarations).
+independently declared with
+[`extern mod` declarations](#extern-mod-declarations).
 
 Imports support a number of "convenience" notations:
 
   * Importing as a different name than the imported name, using the
-    syntax `import x = p::q::r;`.
+    syntax `use x = p::q::r;`.
   * Importing a list of paths differing only in final element, using
-    the glob-like brace syntax `import a::b::{c,d,e,f};`
+    the glob-like brace syntax `use a::b::{c,d,e,f};`
   * Importing all paths matching a given prefix, using the glob-like
-    asterisk syntax `import a::b::*;`
+    asterisk syntax `use a::b::*;`
 
 An example of imports:
 
 ~~~~
-import foo = core::info;
-import core::float::sin;
-import core::str::{slice, to_upper};
-import core::option::Some;
+use foo = core::info;
+use core::float::sin;
+use core::str::{slice, to_upper};
+use core::option::Some;
 
 fn main() {
     // Equivalent to 'log(core::info, core::float::sin(1.0));'
@@ -1053,7 +1054,7 @@ verify the semantics of the pure functions they write.
 An example of a pure function that uses an unchecked block:
 
 ~~~~
-# import std::list::*;
+# use std::list::*;
 
 fn pure_foldl<T, U: copy>(ls: List<T>, u: U, f: fn(&&T, &&U) -> U) -> U {
     match ls {
@@ -1347,7 +1348,7 @@ Rust functions, with the exception that they may not have a body and are
 instead terminated by a semi-colon.
 
 ~~~
-# import libc::{c_char, FILE};
+# use libc::{c_char, FILE};
 # #[nolink]
 
 extern mod c {
diff --git a/doc/tutorial-ffi.md b/doc/tutorial-ffi.md
index ce9eaf130fa..c9e0c1a4fc6 100644
--- a/doc/tutorial-ffi.md
+++ b/doc/tutorial-ffi.md
@@ -13,8 +13,8 @@ hexadecimal string and prints to standard output. If you have the
 OpenSSL libraries installed, it should 'just work'.
 
 ~~~~ {.xfail-test}
-use std;
-import libc::c_uint;
+extern mod std;
+use libc::c_uint;
 
 extern mod crypto {
     fn SHA1(src: *u8, sz: c_uint, out: *u8) -> *u8;
@@ -208,8 +208,8 @@ This program uses the POSIX function `gettimeofday` to get a
 microsecond-resolution timer.
 
 ~~~~
-use std;
-import libc::c_ulonglong;
+extern mod std;
+use libc::c_ulonglong;
 
 type timeval = {mut tv_sec: c_ulonglong,
                 mut tv_usec: c_ulonglong};
diff --git a/doc/tutorial.md b/doc/tutorial.md
index 96539ea8e90..462a20eb85a 100644
--- a/doc/tutorial.md
+++ b/doc/tutorial.md
@@ -1222,7 +1222,7 @@ most vector functionality is provided by methods, so let's have a
 brief look at a few common ones.
 
 ~~~
-# import io::println;
+# use io::println;
 # enum crayon {
 #     almond, antique_brass, apricot,
 #     aquamarine, asparagus, atomic_tangerine,
@@ -1276,7 +1276,7 @@ Rust also supports _closures_, functions that can access variables in
 the enclosing scope.
 
 ~~~~
-# import println = io::println;
+# use println = io::println;
 fn call_closure_with_ten(b: fn(int)) { b(10); }
 
 let captured_var = 20;
@@ -1434,7 +1434,7 @@ takes a final closure argument.
 `do` is often used for task spawning.
 
 ~~~~
-import task::spawn;
+use task::spawn;
 
 do spawn() || {
     debug!("I'm a task, whatever");
@@ -1446,7 +1446,7 @@ argument lists back to back. Wouldn't it be great if they weren't
 there?
 
 ~~~~
-# import task::spawn;
+# use task::spawn;
 do spawn {
    debug!("Kablam!");
 }
@@ -1479,8 +1479,8 @@ fn each(v: ~[int], op: fn(int) -> bool) {
 And using this function to iterate over a vector:
 
 ~~~~
-# import each = vec::each;
-# import println = io::println;
+# use each = vec::each;
+# use println = io::println;
 each(~[2, 4, 8, 5, 16], |n| {
     if n % 2 != 0 {
         println(~"found odd number!");
@@ -1496,8 +1496,8 @@ out of the loop, you just write `break`. To skip ahead
 to the next iteration, write `again`.
 
 ~~~~
-# import each = vec::each;
-# import println = io::println;
+# use each = vec::each;
+# use println = io::println;
 for each(~[2, 4, 8, 5, 16]) |n| {
     if n % 2 != 0 {
         println(~"found odd number!");
@@ -1512,7 +1512,7 @@ normally allowed in closures, in a block that appears as the body of a
 function, not just the loop body.
 
 ~~~~
-# import each = vec::each;
+# use each = vec::each;
 fn contains(v: ~[int], elt: int) -> bool {
     for each(v) |x| {
         if (x == elt) { return true; }
@@ -1760,22 +1760,22 @@ that path is several modules deep). Rust allows you to import
 identifiers at the top of a file, module, or block.
 
 ~~~~
-use std;
-import io::println;
+extern mod std;
+use io::println;
 fn main() {
     println(~"that was easy");
 }
 ~~~~
 
-It is also possible to import just the name of a module (`import
+It is also possible to import just the name of a module (`use
 std::list;`, then use `list::find`), to import all identifiers exported
-by a given module (`import io::*`), or to import a specific set
-of identifiers (`import math::{min, max, pi}`).
+by a given module (`use io::*`), or to import a specific set
+of identifiers (`use math::{min, max, pi}`).
 
 You can rename an identifier when importing using the `=` operator:
 
 ~~~~
-import prnt = io::println;
+use prnt = io::println;
 ~~~~
 
 ## Exporting
@@ -1836,14 +1836,14 @@ fn main() {
 }
 ~~~~
 
-An `import` directive will only import into the namespaces for which
+An `use` directive will only import into the namespaces for which
 identifiers are actually found. Consider this example:
 
 ~~~~
 type bar = uint;
 mod foo { fn bar() {} }
 mod baz {
-    import foo::bar;
+    use foo::bar;
     const x: bar = 20u;
 }
 ~~~~
@@ -2089,8 +2089,8 @@ Spawning a task is done using the various spawn functions in the
 module `task`.  Let's begin with the simplest one, `task::spawn()`:
 
 ~~~~
-import task::spawn;
-import io::println;
+use task::spawn;
+use io::println;
 
 let some_value = 22;
 
@@ -2116,8 +2116,8 @@ receiving messages. The easiest way to create a pipe is to use
 computations in parallel.  We might write something like:
 
 ~~~~
-import task::spawn;
-import pipes::{stream, Port, Chan};
+use task::spawn;
+use pipes::{stream, Port, Chan};
 
 let (chan, port) = stream();
 
@@ -2137,7 +2137,7 @@ Let's walk through this code line-by-line.  The first line creates a
 stream for sending and receiving integers:
 
 ~~~~ {.ignore}
-# import pipes::stream;
+# use pipes::stream;
 let (chan, port) = stream();
 ~~~~
 
@@ -2146,8 +2146,8 @@ once it is complete.  The channel will be used by the child to send a
 message to the port.  The next statement actually spawns the child:
 
 ~~~~
-# import task::{spawn};
-# import comm::{Port, Chan};
+# use task::{spawn};
+# use comm::{Port, Chan};
 # fn some_expensive_computation() -> int { 42 }
 # let port = Port();
 # let chan = port.chan();
@@ -2167,7 +2167,7 @@ some other expensive computation and then waiting for the child's result
 to arrive on the port:
 
 ~~~~
-# import pipes::{stream, Port, Chan};
+# use pipes::{stream, Port, Chan};
 # fn some_other_expensive_computation() {}
 # let (chan, port) = stream::<int>();
 # chan.send(0);
@@ -2188,8 +2188,8 @@ the string in response.  The child terminates when `0` is received.
 Here is the function that implements the child task:
 
 ~~~~
-# import std::comm::DuplexStream;
-# import pipes::{Port, Chan};
+# use std::comm::DuplexStream;
+# use pipes::{Port, Chan};
 fn stringifier(channel: DuplexStream<~str, uint>) {
     let mut value: uint;
     loop {
@@ -2211,9 +2211,9 @@ response itself is simply the strified version of the received value,
 Here is the code for the parent task:
 
 ~~~~
-# import std::comm::DuplexStream;
-# import pipes::{Port, Chan};
-# import task::spawn;
+# use std::comm::DuplexStream;
+# use pipes::{Port, Chan};
+# use task::spawn;
 # fn stringifier(channel: DuplexStream<~str, uint>) {
 #     let mut value: uint;
 #     loop {