Is there anyway to Deify the following code snippet?

Salih Dincer salihdb at hotmail.com
Wed Apr 16 16:44:01 UTC 2025


On Wednesday, 16 April 2025 at 14:48:04 UTC, H. S. Teoh wrote:
> Pointers can be used perfectly fine in @safe. Just not unsafe 
> operations like pointer arithmetic.
>

So, apart from stdout.flush(), is it perfect to use the following 
code with @safe:

```d
import std.stdio, std.random;
import std.random : ups = unpredictableSeed;
import core.stdc.stdlib : rand, RAND_MAX;

alias T = double; // float;
enum N = int.max; // long.max;
auto phobosRandom()
   => cast(T)Random(ups).front / N;

auto stdlibRandom()
   => cast(T)rand() / RAND_MAX;

@safe:
struct RandGroup
{
     string name;
     T function() gene;
     T up = 0.9;
     T down = 0.1;
} /* Prints:

0.10826: Testing uniform...
0.493747: Testing Phobos...
0.840188: Testing StdLib...
//*/

void main()
{
     RandGroup[3] funcs = [
     {
           name: "uniform",
           gene: () => uniform(0.0, 1.0),
           //down: 0.01, up: 0.02
     }, {

           name: "Phobos",
           gene: &phobosRandom,

     }, {

           name: "StdLib",
           gene: &stdlibRandom,

      },
   ];
   
   foreach (func; funcs)
   {
     with(func)
     {
       auto generate = gene();
       generate.write(": ");
       writeln("Testing ", name, "...");
       //stdout.flush(); // error
     }
   }
}
```

SDB at 79




More information about the Digitalmars-d-learn mailing list