Building a small personal project in #Rust to teach myself the language. As I was looking over my code, I noticed a mistake I'd made that technically worked, but was kind of silly so I fixed it.
This got me to wondering if Rust had a linter (it does) because surely I'd made other similar rookie mistakes. I found the linter and ran it on my project. It came back with one result that I already knew about: a value in a struct that doesn't get read because I haven't written that code yet. That was it.
I was surprised. It's still a very small project, but perhaps I'm a more competent developer than I give myself credit for.
like this
reshared this
Does time::OffsetDateTime::now_local()
always fail in a testing context or something? It keeps returning Err(IndeterminateOffset)
.
#rust
Edit: it's working fine when I use it in src/main.rs
.
Moravian Kaleidoscopy LtdπΊπ¦ likes this.
reshared this
UtcOffset
not threadsafe in such an environment?
UtcOffset
to be manually specified.
More musings on #Rust:
I wonder if it would be possible to write an #SNES #ROM in Rust. It seems like exactly the kind of resource-constrained system that would be a prime candidate for that sort of thing. Unfortunately, it seems that the SNES used a custom processor, so it's very possible that I won't be able to specify it as a compile target. A quick search reveals that many people have made SNES emulators in Rust, but at a glace, I see nothing about writing ROMS.
I believe the original NES used an off-the-shelf processor (6502 if memory serves?). Perhaps that's more likely to be supported, but that may be a little too resource constrained.
I shall have to dig deeper into this idea. I love the idea of building a custom ROM rather than just pirating something off the internet.
Has anyone done anything like this? Links to any relevant resources would be very much appreciated.
like this
reshared this
like this
The SNES CPU is based on the WDC 65C816, which is indeed able to run 6502 code but it also has 16-bit mode instructions with much larger memory address space.
I think the only general purpose computer to use this CPU was the Apple IIGS, so maybe look around to see if there's any Rust port to Apple IIGS.
this folks have ported llvm to MOS6502: llvm-mos.org/wiki/Welcome
You can try to link rustc to that fork and add a new rustc target.
It will be a very long journey, but it is possible.
Newbie #Rust question time:
I wan to use the current_local_offset function from the time
library, but I apparently need to import it into my project with the local-offset
feature.
I assume I need to specify this in Cargo.toml
but for the life of me, I can't figure out how. Can someone point me in the right direction?
like this
reshared this
You need to specify the `features` list next to the version in Cargo.toml:
doc.rust-lang.org/cargo/refereβ¦
Alternatively, you can run
`cargo add -F FEATURE1,FEATURE2,β¦`
You can run `cargo add` even after you added a dependency.
Have you tried something like the following?
time = { version = "0.3.36", features = ["local-offset"] }
Jonathan Lamothe likes this.
People who don't like #Rust: why specifically don't you like it?
I'm in the process of learning it now. There are definitely some things about the language that I can see some as finding irritating (i.e.: the borrowing system). Personally though, I'd rather have a dozen complie-time errors than a single runtime error. This is the reason I tend to gravitate towards Haskell, for instance.
It's certainly not the right language for everything, but if you want better safety in code that needs to be highly efficient, it seems a reasonable alternative to C/C++.
like this
reshared this
the borrow checker is such a big part of the language it's not just slightly irritating, it's like having a non-consentual finger up the ass every time you open some Rust code in your editor
And the fact Rust is always staticallly linked and lacks any sort of reproducible builds don't help, even the compiler itself only compiles with an n-2 version of the compiler, if you skip updating the compiler for a while and want or have to keep using sources then have fun compiling every version since you last updated the compiler
Its type system is also like a borrow checker: non-consentual fist up the ass, want to add an u8 to an u32? Nope, can't, have to manually cast everything because that's why we do programming languages instead of writing Assembly, to do all the fucking busy work ourselves
Oh, and Cargo is its own can of rotten worms
LisPi likes this.
@Reiddragon > And the fact Rust is always staticallly linked and lacks any sort of reproducible builds don't help
That is excusable in languages where source-only distribution is normal and expected. (Indeed, compilation should be a transparent caching step and artifacts of such shouldn't be commonly shared.)
That is not the case for Rust.
> even the compiler itself only compiles with an n-2 version of the compiler
That's also a problem, Rust's bootstrap story sucks.
Ada's might suck as much, I'm not sure, I have found a few interpreters when I last looked...
> I'd rather have a dozen complie-time errors than a single runtime error. This is the reason I tend to gravitate towards Haskell, for instance.
There should be no meaningful difference between runtime and dev-time for the majority of devs. Dead languages aren't necessary. And punchcard retrocompatibility can be preserved without prioritizing a development process that is optimized for that workflow.
As for typing static vs dynamic, there's a thing called "gradual typing", and it is very possible to tie the type-checker into a REPL.
I've got a few things with Rust that make me dislike it a bit -- note that that doesn't mean that I think it's generally a bad language. (They're all good langs, Brent.) But here we go:
Another single implementation standard-less language. No solid standard library, everything done by downloading the internet. Very un-Turbo-Pascal-ish compile times and memory usage. Annotations. BCPL-ish syntax with too much line noise (and hey, I used to program Perl). Tied a lot to the worst things in IT (browser engines, crypto). Fanatical community. Overly complex async to save me from writing threads. Both functional purists and micro-optimizers. The word "Rustaceans" alone.
It's not a language that I'd like to use recreationally, but I wouldn't quit jobs if I have to do more work with it at work.
Jonathan Lamothe likes this.
@Reiddragon @me
@Reiddragon
DJ UNK and I basically have a show that's just about what @me does.
BREAKING
GREEN TEA ADDED TO MENU AT PARADISE SUSHI
so according to classic Bell labs at worst jlamothe is a minor success ;p
πππ likes this.
Joel Michael
in reply to Jonathan Lamothe • • •Jonathan Lamothe
in reply to Joel Michael • •Codrus πΊπ²
in reply to Jonathan Lamothe • • •@jpm `rustc` itself has built-in lints. There's also MIRI, and some other static analysis tools...
github.com/rust-lang/miri
GitHub - rust-lang/miri: An interpreter for Rust's mid-level intermediate representation
GitHubDylan :heart_nb:
in reply to Jonathan Lamothe • • •Jonathan Lamothe likes this.
Jonathan Lamothe
in reply to Dylan :heart_nb: • •like this
Jeremy List, Dylan :heart_nb: and Esteban KοΏ½ber :rust: like this.
Dylan :heart_nb:
in reply to Jonathan Lamothe • • •Jonathan Lamothe
in reply to Jonathan Lamothe • •