std.stdio.File和std.stream之间的互兼容性*

std.stdio.File和std.stream之间的互兼容性*,io,d,standard-library,Io,D,Standard Library,有没有什么好方法可以将std.stdio.File转换为std.stream流的实例 原因:我发现自己需要一个在流上工作的通用日志实用程序,我想传递它std.stdio.stderr,它是一个std.stdio.File,您可以从中使用 例如: import std.stream; import std.cstream; void main() { ubyte[] data = cast(ubyte[])"someData"; OutputStream stream = der

有没有什么好方法可以将
std.stdio.File
转换为
std.stream
流的实例

原因:我发现自己需要一个在流上工作的通用日志实用程序,我想传递它
std.stdio.stderr
,它是一个
std.stdio.File

,您可以从中使用

例如:

import std.stream;
import std.cstream;

void main() {
    ubyte[] data = cast(ubyte[])"someData";
    OutputStream stream = derr;
    stream.write(data);
}
顺便说一句,您可以从中使用in-D标准库

例如:

import std.stream;
import std.cstream;

void main() {
    ubyte[] data = cast(ubyte[])"someData";
    OutputStream stream = derr;
    stream.write(data);
}

顺便说一句,这里有一个in-D标准库,而不是不推荐的
std.stream
模块,使用范围

导入标准stdio;
进口标准范围;
导入标准算法;
输入标准类型;
进口标准conv;
//日志级别
枚举级别{
调试,
信息,
警告
};
别名LogMsg=Tuple!(级别、字符串);//应该是一个结构,但我很懒
void main(){
//获取一个writer,它是一个输出范围
自动编写器=stderr.lockingTextWriter();
//一些消息。可以是任何输入范围,而不仅仅是数组
自动消息=[
LogMsg(LEVEL.DEBUG,“日志消息1”),
LogMsg(LEVEL.INFO,“日志消息2”),
LogMsg(LEVEL.WARN,“日志消息3”),
];
//把每一条信息都写给作者
放(作者、留言)
//将LogMsg转换为字符串以进行写入。
//奖励积分:使用链而不是~来避免分配
.map!(msg=>msg[0]。收件人!字符串~“:“~msg[1]~”\n”)
);
}

使用范围,而不是不推荐使用的
std.stream
模块

导入标准stdio;
进口标准范围;
导入标准算法;
输入标准类型;
进口标准conv;
//日志级别
枚举级别{
调试,
信息,
警告
};
别名LogMsg=Tuple!(级别、字符串);//应该是一个结构,但我很懒
void main(){
//获取一个writer,它是一个输出范围
自动编写器=stderr.lockingTextWriter();
//一些消息。可以是任何输入范围,而不仅仅是数组
自动消息=[
LogMsg(LEVEL.DEBUG,“日志消息1”),
LogMsg(LEVEL.INFO,“日志消息2”),
LogMsg(LEVEL.WARN,“日志消息3”),
];
//把每一条信息都写给作者
放(作者、留言)
//将LogMsg转换为字符串以进行写入。
//奖励积分:使用链而不是~来避免分配
.map!(msg=>msg[0]。收件人!字符串~“:“~msg[1]~”\n”)
);
}

请注意std.stream已经被弃用了。@ColonelThirtyTwo是的,我还看到了一些。该死的耻辱,一个没有流的大标准库。我们什么时候才能得到D2的探戈?用音域代替。它们类似于流,但被概括为不仅仅是字节。看我的答案。请注意std.stream已经被弃用了。@ColonnelthirtyTwo是的,我看到了更多。该死的耻辱,一个没有流的大标准库。我们什么时候才能得到D2的探戈?用音域代替。它们类似于流,但被概括为不仅仅是字节。查看我的答案。范围是否具有某种动态调度?@KarlDamgaardAsmussen是的,使用范围中的包装器是否具有某种动态调度?@KarlDamgaardAsmussen是的,使用范围中的包装器