I haven't written any Go, and only a little Rust, but it competes with both of them in a way.
It's safe and GC'd by default, but you can trivially swap GC or you can run entirely without GC and do everything manually. It's idiomatic to use managed references but you can do unsafe pointers if you want. Interoperability with C is easy but not seamless like with for instance Zig.
Compile times are excellent compared to Rust, as are binary sizes, making static binaries is trivial (which is harder in Go from what I understand).
I find the syntax easier/better than Rust with fewer special characters, but compared to Go I think the syntax is a wash.
It requires very little boiler plate, and let's you do things that cut down on code size like using `var` or `let` statements in blocks:
var
intVal: int
strVal: string
I like the distinction of var vs. let over Rust's let mut/let as well.
The two major weaknesses at this point are package availability and documentation. There's a package for everything in Go and Rust land, and there's lots of documentation for everything. There's quite a handy standard library in Nim and most of what you typically need in the Nimble package manager, but sometimes you'll run into the situation of having to roll your own X.