[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231201122740.2214259-1-aliceryhl@google.com>
Date: Fri, 1 Dec 2023 12:27:40 +0000
From: Alice Ryhl <aliceryhl@...gle.com>
To: david.laight@...lab.com
Cc: a.hindborg@...sung.com, alex.gaynor@...il.com,
aliceryhl@...gle.com, arve@...roid.com, benno.lossin@...ton.me,
bjorn3_gh@...tonmail.com, boqun.feng@...il.com, brauner@...nel.org,
cmllamas@...gle.com, dan.j.williams@...el.com, dxu@...uu.xyz,
gary@...yguo.net, gregkh@...uxfoundation.org,
joel@...lfernandes.org, keescook@...omium.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
maco@...roid.com, ojeda@...nel.org, peterz@...radead.org,
rust-for-linux@...r.kernel.org, surenb@...gle.com,
tglx@...utronix.de, tkjos@...roid.com, tytso@....edu,
viro@...iv.linux.org.uk, wedsonaf@...il.com, willy@...radead.org
Subject: RE: [PATCH 1/7] rust: file: add Rust abstraction for `struct file`
David Laight <David.Laight@...LAB.COM> writes:
> > > I don't know about Rust namespacing, but in other languages, how you
> > > have to especify namespaces tend to be ***far*** more verbose than
> > > just adding an O_ prefix.
> >
> > In this case we already have the `flags` namespace, so I thought about
> > just dropping the `O_` prefix altogether.
>
> Does rust have a 'using namespace' (or similar) so that namespace doesn't
> have to be explicitly specified each time a value is used?
> If so you still need a hint about which set of values it is from.
>
> Otherwise you get into the same mess as C++ class members (I think
> they should have been .member from the start).
> Or, worse still, Pascal and multiple 'with' blocks.
Yes.
You can import it with a use statement. For example:
use kernel::file::flags::O_RDONLY;
// use as O_RDONLY
or:
use kernel::file::flags::{O_RDONLY, O_WRONLY, O_RDWR};
// use as O_RDONLY
or:
use kernel::file::flags::*;
// use as O_RDONLY
If you want to specify a namespace every time you use it, then it is
possible: (But often you wouldn't do that.)
use kernel::file::flags;
// use as flags::O_RDONLY
or:
use kernel::file;
// use as file::flags::O_RDONLY
or:
use kernel::file::flags as file_flags;
// use as file_flags::O_RDONLY
And you can also use the full path if you don't want to add a `use`
statement.
Alice
Powered by blists - more mailing lists