nous,

You can give it variables:

<pre style="background-color:#ffffff;">
<span style="font-weight:bold;color:#a71d5d;">let</span><span style="color:#323232;"> foo </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#0086b3;">4</span><span style="color:#323232;">;
</span><span style="font-weight:bold;color:#a71d5d;">let</span><span style="color:#323232;"> bar </span><span style="font-weight:bold;color:#a71d5d;">= </span><span style="color:#183691;">"bar"</span><span style="color:#323232;">;
</span><span style="color:#323232;">format!(</span><span style="color:#183691;">"</span><span style="color:#0086b3;">{foo}{bar}</span><span style="color:#183691;">"</span><span style="color:#323232;">);
</span>

If you have a format string that long with arbatary expressions putting them all raw in the format string is not going to improve much. Better to give them actual names first.

Walnut356,
@Walnut356@programming.dev avatar

in this case it’s about 80% function calls. They’re convenience functions for assembly instructions, so they’re of the form:

<pre style="background-color:#ffffff;">
<span style="color:#323232;">load(Reg::D, "A"),
</span><span style="color:#323232;">load_const(5),
</span>

which is more useful than variables would be. I guess i could use .join or a crate like concat_string? Either way i sorely miss arbitrary expression format strings from python =(

sukhmel,

As far as I remember, the point for not allowing arbitrary expressions is that it makes what looks like formatting an arbitrary complex operation and that it doesn’t improve readability that much.

Although sometimes I miss being able to refer to fields in format, for function calls and especially this many, I agree with an advice to put strings in a vector and joining them. Plus, there is a limit to how many arguments format macro can accept, iirc

Walnut356,
@Walnut356@programming.dev avatar

it makes what looks like formatting an arbitrary complex operation and that it doesn’t improve readability that much.

What’s silly to me about that reasoning is that all workarounds are equally less convenient, have less readability, and the effect is identical to just letting me put whatever between the brackets. I genuinely dont understand the downside i guess.

Calling .join on a vector can have side effects too, except the “we’re concatting strings” is at the end rather than the beginning (and could obfuscate the fact that the end result is a string). It has just as much room for abuse as a long format!(). Even with just format!(), anything you could do inbetween the brackets, you can do outside the brackets in the arguments anyway. At least when it’s between the brackets, i know exactly where it’s going and when without having to juggle the string pieces and assemble them in my head.

sukhmel,

Well, that’s all true from an end user perspective. But consider that format! is a macro and as such it should process its format string. Calling something from inside evaluation of a format string really does seem weird in that regard

coloredgrayscale,

Creating an array of the function calls, and joining those seems more readable in that case.

Plus you don’t have to take care that you use the correct number of placeholders.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • programming_horror@programming.dev
  • tacticalgear
  • DreamBathrooms
  • InstantRegret
  • magazineikmin
  • osvaldo12
  • Youngstown
  • ngwrru68w68
  • slotface
  • everett
  • rosin
  • thenastyranch
  • kavyap
  • GTA5RPClips
  • tester
  • JUstTest
  • modclub
  • cubers
  • ethstaker
  • mdbf
  • khanakhh
  • Durango
  • normalnudes
  • Leos
  • cisconetworking
  • anitta
  • provamag3
  • megavids
  • lostlight
  • All magazines