• @RustyNova
    link
    894 days ago

    Rewrite it in rust. Now get a lifetime of problems

    • Skull giver
      link
      fedilink
      164 days ago

      Lifetime issues? Just clone() all your problems away. Everything is Clonable if you try hard enough. Who needs performance anyway?

      • bluGill
        link
        fedilink
        194 days ago

        There are many who are pushing rust as a religion tan that turns people off.

      • @RustyNova
        link
        114 days ago

        Half joking. Lifetimes can be hard but once you understand the concept it’s quite easy.

        The second joke is about you never learn Rust. You’re always on the learning rollercoaster. Always one step away but each time it makes you rethink the whole language.

        Don’t get me wrong, I’m a rust main. But does issues does exist

      • @[email protected]
        link
        fedilink
        English
        64 days ago

        Both. The people who promote Rust can be very annoying. They trumpet Rust’s memory safety while turning a blind eye to any problems with the language, let alone the effort required to rewrite a large system and all the bugs such a rewrite will introduce.

    • Bappity
      link
      English
      5
      edit-2
      4 days ago

      just started out rust and made a massive thing with sqlx only to find out the latest versions don’t have mssql support anymore and the last version that did doesn’t support decoding DateTime<Utc> 😭😭😭

      had to rewrite the whole thing again with Tiberius, painful yet educational

      • @RustyNova
        link
        24 days ago

        Sadly sqlx seems to have gone semi-proprietary with their MSQL driver. Personally never understood the appeal of mssql when there’s Postgres and SQLite, but hey, it does work.

        I’ve started using welds as my new ORM of choice as SeaORM and Diesel is just not a friendly experience, and supports Mssql OOB. So it’s nice there’s still options for it.

        • @RustyNova
          link
          3
          edit-2
          4 days ago

          No idea for Tiberius, but for SQLite I’m stuck with converting to timestamp and back. Ugly but works

          P.S. add a getter to your data struct and you can be “seamless”

        • Bappity
          link
          English
          2
          edit-2
          4 days ago

          I switched to using tiberius

          bit different but not too hard don’t have my code on hand atm but this is how I started with it

              let mut config = Config::new();
              config.host("your_server_name");
              config.database("your_database_name");
              config.authentication(tiberius::AuthMethod::sql_server("your_username", "your_password"));
              config.trust_cert();
          
              let tcp = TcpStream::connect(config.get_addr()).await?;
              tcp.set_nodelay(true)?;
              
              let mut client = Client::connect(config, tcp.compat_write()).await?;
          

          then I did something along the lines of

          fn main() {
                  let stream = client.query(&query, &[]).await?;
                  let rows = stream.into_first_result().await?;
          
                  let db_data: Vec<MyObject> = rows.into_iter().map(mapping_function_i_made_for_myobject).collect();
          }
          
          fn mapping_function_i_made_for_myobject(row: Row) -> MyObject {
              MyObject {
                  my_date_field: row.get::<NaiveDateTime, _>("my_date_field").map(|dt| Local.from_local_datetime(&dt).unwrap()),
              }
          }