You can get the exclusive behaviour with random.randrange
. (Relevant Stack Overflow question with a somewhat interesting answer)
Interesting way of handling project vs global scope:
Some package managers (e.g.
npm
) use per-project scope by default, but also allow you to install packages globally using flags (npm install -g
). Others (e.g.brew
) use global scope.I like the idea of allowing both project and global scope, but I do not like the flags approach. Why don’t we apply a heuristic:
If there is a
.sqlpkg
folder in the current directory, use project scope. Otherwise, use global scope.This way, if users don’t need separate project environments, they will just run
sqlpkg
as is and install packages in their home folder (e.g.~/.sqlpkg
). Otherwise, they’ll create a separate.sqlpkg
for each project (we can provide a helperinit
command for this).
Seems rather implicit, though, especially if the command output doesn’t specify which scope a package was installed in. If a user moves to a subdirectory, forgets they are there, and then tries to install a package, the package will unexpectedly install in global scope (though this particular version of the problem can be solved by also looking in parent directories).
Can’t resist pointing out how you should actually write the function in a “real” scenario (but still not handling errors properly), in case anyone wants to know.
If the list is guaranteed to have exactly two elements:
fn is_second_num_positive_exact(input: &str) -> bool {
let (_, n) = input.split_once(',').unwrap();
n.parse::<i32>().unwrap() > 0
}
If you want to test the last element:
fn is_last_num_positive(input: &str) -> bool {
let n = input.split(',').next_back().unwrap();
n.parse::<i32>().unwrap() > 0
}
If you want to test the 2nd (1-indexed) element:
fn is_second_num_positive(input: &str) -> bool {
let n = input.split(',').nth(1).unwrap();
n.parse::<i32>().unwrap() > 0
}
I can imagine Berdly Deltarune trying to explain this to Kris and Noelle in roughly this tone of voice.
Even regular Rust code is more “exciting” than Python in this regard, since you have a choice between
self
,&self
, and&mut self
. And occasionallymut self
,&'a self
, and evenself: Box<Self>
. All of which offer different semantics depending on what exactly you’re trying to do.