Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)MR
Posts
0
Comments
177
Joined
2 yr. ago

  • Obtainium will check regularly for new versions and update automatically. So that's definitely a benefit if you'd like to keep the apps updated.

    As for Mull, you could add its f-droid link into Obtainium if you'd like to have all updates via a single app.

  • I feel so sorry for recommending a closed source app in this community, but Genius Scan from Grizzly Labs is the only non-oss app I still use. I think I paid around €30 for the enterprise version so it doesn't bother me with cloud nonsense.

    It's all local only (if you want) and the scanning quality is the best I've found. (I used OpenNoteScanner for a few months, sadly it's not even close both in terms of quality and convenience)

    I figured I'll mention it as an alternative to MS Lens app that likely sucks in every bit of information it can get its hands on.

  • That specific repository has no releases so it won't work AFAIK. You need a repository with releases, that have apk attached. (Typically the developer would set up a CI workflow to build and attach apk for every release)

    Edit: For example AuroraStore has releases with apks. So you can just enter gitlab repo for AuroraStore into Obtainium and it will install it and keep it updated.

  • You always get a Result. On that result you can call result.unwrap() (give me the bool or crash) or result.unwrap_or_default() (give me bool or false if there was error) or any other way you can think of. The point is that Rust won't let you get value out of that Result until you somehow didn't handle possible failure. If function does not return Result and returns just value directly, you (as a function caller) are guaranteed to always get a value, you can rely on there not being a failure that the function didn't handle internally.

  • Well in that sense Rust is even more predictable than Java. In Java you can always get back exception that bubbled up the stack. Rust function would in that case return Result that you need to handle somehow before getting the value.

  • This is no exception. Thinkpad used to be great years (decade?) ago. The stuff they have produced in recent years is crap. I had two work laptops in the last 4 years and both are absolutely terrible compared to the old stuff.

  • You got downvoted, but South Africa never complained about russian regime commiting genocide in Ukraine. They were busy sucking putin's dick while russian rockets bombarded silos with grain for the African continent.

    Which is not to say that they are wrong about the genocide in Palestine. They are right this time IMO. I just don't believe they care about the genocide at all.

  • I think the best way to look at it is to see their side. If your relatives are similar to mine, they don't really care about Ukraine or Zelensky. Not even in a negative way. They just want simple solutions to their problems that are actually very complex.

    You understand that having a fleet of Migs that depend on russian technicians is not a reasonable thing if the biggest warmonger in the neighborhood is russia itself. You understand that Slovakia can't depend on russian gas or oil after russia proved many times, that they will not hesitate to use this dependency every opportunity they get. You understand that making concessions to russia for a promise of peace isn't going to stop them, because we tried that many times before. You understand that none of these problems have simple solutions.

    But many people choose to be ignorant and believe politicians that promise simple solutions. "We will stop supporting war, negotiate peace in Ukraine and buy cheap reliable russian energy again" It sounds good, it sounds easy. So they will believe any lie that supports this "solution". Or pretend they believe it, because frankly in many cases I know they aren't really that stupid to believe some of the lies. They just choose to be ignorant and don't ask questions.

    How can you depend on russian gas again if you saw them draining EU gas storage year before the invasion and after you saw them cheerfully proclaiming that your family will freeze to death? You can't. But people choose to ignore reality, because they don't like how it looks.

    When you look at it this way, you understand that there's no reason to discuss Ukraine with your family. Because it's really not about Ukraine. It's about how much they pay for their groceries. And it's easier to believe that corrupt Zelensky is to be blamed for expensive bread rather than the fact that we trusted corrupt unstable country with our energy dependency and now have a lot of work, tears and blood ahead of us to dig ourselves from the hole we dug for decades.

  • Fun fact: This is also how Ethernet (wired network connection) got its name. Ether was already dismissed as a theory, but "omnipresent, completely-passive medium for the propagation of electromagnetic waves" was a good description of hardware layer that can transfer data in a way that's abstracting all the signal handling complexity for higher layers.

    So in a way I'm actually sending this comment via Ethernet.

  • The example even used unwrap_or_else where they should use unwrap_or. Then it uses std::i64::MIN as fallback value where they could use something like 0 that would be a better example and honestly make more sense there.

     
        
    let parsed_numbers = ["1", "not a number", "3"]
        .iter()
        .map(|n| n.parse().unwrap_or(0))
        .collect();
    
    // prints "[1, 0, 3]"
    println!("{:?}", parsed_numbers);
    
      

    Even without trimming this to something less convoluted, the same functionality (with different fallback value) could be written in more readable form.

    Obviously in the context of the page something like this would make way more sense:

     
        
    maybe_number.unwrap_or(0)
    
      

    Or perhaps more idiomatic version of the above:

     
        
    maybe_number.unwrap_or_default()
    
    
      
  • Is that Rust? Assuming a is an Option (which would be close approximation of OP's nullable type) and assuming b is not null, then this would be closer to the original idea:

     
        
    a.unwrap_or(b)
    
      

    It returns value of a if it's not None rather than Option.

  • I wish I had time and domain knowledge to add those two to Solvespace. It's the only thing that I'm really missing. And for 3D printing design chamfers are really necessary, the models print much nicer when there are no sharp corners.