Which of these code styles do you find preferable?

First option using mut with constructor in the beginning:

  let mut post_form = PostInsertForm::new(
    data.name.trim().to_string(),
    local_user_view.person.id,
    data.community_id,
  );
  post_form.url = url.map(Into::into);
  post_form.body = body;
  post_form.alt_text = data.alt_text.clone();
  post_form.nsfw = data.nsfw;
  post_form.language_id = language_id;

Second option without mut and constructor at the end:

  let post_form = PostInsertForm {
    url: url.map(Into::into),
    body,
    alt_text: data.alt_text.clone(),
    nsfw: data.nsfw,
    language_id,
    ..PostInsertForm::new(
      data.name.trim().to_string(),
      local_user_view.person.id,
      data.community_id,
    )
  };

You can see the full PR here: https://github.com/LemmyNet/lemmy/pull/5037/files

You are viewing a single thread.
View all comments
5 points

@DemocratPostingSucks@lemm.ee @Deebster@programming.dev @al4s@feddit.org Thanks for the feedback! Personally I prefer the first option, but based on your comments I will merge the PR with the second option.

permalink
report
reply
13 points

If you’re ever forced to do something the second way, you can also wrap it in braces, that way you end up with an immutable value again:

let app = {
  let mut app = ...
  ...
  app
};
permalink
report
parent
reply
1 point

Why not just a let app = app; line after the let mut app = ...; one?

permalink
report
parent
reply
2 points

A scope groups the initialization visually together, while adding the let app = app; feels like it just adds clutter - I’d probably just leave it mut in that case.

permalink
report
parent
reply
1 point

Thats even more verbose so the second option is better.

permalink
report
parent
reply
6 points

Yeah if you have the second option, use it, but if the struct has private fields it won’t work.

permalink
report
parent
reply

Rust Programming

!rust@lemmy.ml

Create post

Community stats

  • 172

    Monthly active users

  • 93

    Posts

  • 161

    Comments

Community moderators