I am not a language developer, just an user. I like Rust, so could I
please to give some suggestions about improve Rust?

Recently, I try to use Rust to build a GUI library prototype. Just
like wxWidget or SWT, wrap the native API(win32 and gtk+, cocoa in
plan if possible). At the meantime, I am writing a Rust tutorial.
During the developing and writing, I got a some questions.

We all(at least I) hope Rust could get wildly use. I think readability
and learnability take emphatically considered. Rust does these well,
and could do better.

Here are my suggestions about Rust(based on 0.7). Note: Just a user
opinions, not a developer perspective. Forgive me if I was wrong.

Ownership, Owned Box, Managed Box
What about hide the ownership, owned box, managed box to users? Just a
borrowed pointer and a dereferencing pointer, like Go.

Slice?
Provide first class support of array, slice(not borrowed pointer to
vector). And support slice operation, like a[0:5].

Loop
Simplify the for loop:
Hide the complexity of iterator, use "for x in xx", like Python(I
think I saw it in 0.8 Manual).
for int:range(0, 10), for uint:range(0, 10), ... to "for range(0, 10)"
for int:range_step(0,10,2) are the same.

Improve the function declare:
fn foo(x : int, y : int, z: int) to fn foo(x, y, z: int)

And could make the expression valid?
(index = count % 2) == 0, Just like the meaning in C++. Currently
(index = count % 2) == () is valid, but it make no sense.

Multiple return values
if has a function like this:

fn addsub(x : int, y : int) -> (int, int) {
        return (x+y,x-y);
}

them, this is valid:

let (b,c) = addsub(x, y);

but this is invalid;

let b:int =0;
let c:int =0;
(b,c) = addsub(x, y);

also invalid:

let (b,c)  = (0, 0);
(b,c) = addsub(x, y);
        
Module: code module and file module?
I call module declare with mod keyword is "code module", and call rust
source file is "file module".
import a code module in other code module in same source file, we
should use keyword "use", but if we want to import file module, we
need to use keyword "mod". I know mod xxx means find xxx.rs, But could
we unify it?

According the official "Rust tutorial", a mod member is private by
default. But it seems that we can access submod in a accessible mod
directly.

Embedded anonymous structure?
Embedded anonymous structure in Go is good idea, I think.

And at last: could support default parameter in function/method?

English is not my native language, so sorry for the grammar mistake.

Best Regards
Sun
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to