func Wrap(printFn interface{}) io.Writer {
	switch printFn.(type) {
	case io.Writer:
		return printFn.(io.Writer)
	case writerFunc:
		return printFn.(io.Writer)
	case printFunc:
		return OutputFrom.Print(printFn.(printFunc))
	case printVariadicFunc:
		return OutputFrom.PrintVardiadic(printFn.(printVariadicFunc))
	case printfFunc:
		return OutputFrom.Printf(printFn.(printfFunc))
	case printlnFunc:
		return OutputFrom.Println(printFn.(printlnFunc), false)
	}
	return NopOutput()
}
Wrap returns a new output based on the "printfFn"
if not a compatible output found then it will
return a writer which writes nothing.

To check if the wrapping worked
you can check if the result `io.Writer`
`IsNop`, i.e:
std's log.Panicf is not a compatible interface

output := Output(log.Panicf)
if IsNop(output) {
// conversation failed, do something or panic.
}
package pio
import (
	"io"
)
type (
	printFunc         func(interface{})
	printVariadicFunc func(...interface{})
	printfFunc        func(string, ...interface{})
	printlnFunc       func(string)
)
type writerFunc func([]byte) (int, error)
func (w writerFunc) Write(p []byte) (n int, err error) {
	return w(p)
}