ggstd 0.1.0

Partial implementation of Go standard library
Documentation
// Copyright 2023 The rust-ggstd authors.
// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

use ggstd::encoding::hex;

fn main() {
    example_encode();
    example_decode();
    example_decode_string();
    example_encode_to_string();
}

fn example_encode() {
    let src = "Hello Gopher!";

    let mut dst = vec![0; hex::encoded_len(src.len())];
    let n = hex::encode(&mut dst, src.as_bytes());

    println!("{}", String::from_utf8_lossy(&dst[..n]));

    // Output:
    // 48656c6c6f20476f7068657221
}

fn example_decode() {
    let src = b"48656c6c6f20476f7068657221";

    let mut dst = vec![0; hex::decoded_len(src.len())];
    let (n, err) = hex::decode(&mut dst, src);
    if err.is_some() {
        panic!("{}", err.unwrap());
    }

    println!("{}", String::from_utf8_lossy(&dst[..n]));

    // Output:
    // Hello Gopher!
}

fn example_decode_string() {
    let s = "48656c6c6f20476f7068657221";
    let (decoded, err) = hex::decode_string(s);
    if err.is_some() {
        panic!("{}", err.unwrap());
    }

    println!("{}", String::from_utf8_lossy(&decoded));

    // Output:
    // Hello Gopher!
}

// fn ExampleDump() {
// 	content := []byte("Go is an open source programming language.")

// 	fmt.Printf("%s", hex::Dump(content))

// 	// Output:
// 	// 00000000  47 6f 20 69 73 20 61 6e  20 6f 70 65 6e 20 73 6f  |Go is an open so|
// 	// 00000010  75 72 63 65 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |urce programming|
// 	// 00000020  20 6c 61 6e 67 75 61 67  65 2e                    | language.|
// }

// fn ExampleDumper() {
// 	lines := []string{
// 		"Go is an open source programming language.",
// 		"\n",
// 		"We encourage all Go users to subscribe to golang-announce.",
// 	}

// 	stdoutDumper := hex::Dumper(os.Stdout)

// 	defer stdoutDumper.Close()

// 	for _, line := range lines {
// 		stdoutDumper.Write([]byte(line))
// 	}

// 	// Output:
// 	// 00000000  47 6f 20 69 73 20 61 6e  20 6f 70 65 6e 20 73 6f  |Go is an open so|
// 	// 00000010  75 72 63 65 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |urce programming|
// 	// 00000020  20 6c 61 6e 67 75 61 67  65 2e 0a 57 65 20 65 6e  | language..We en|
// 	// 00000030  63 6f 75 72 61 67 65 20  61 6c 6c 20 47 6f 20 75  |courage all Go u|
// 	// 00000040  73 65 72 73 20 74 6f 20  73 75 62 73 63 72 69 62  |sers to subscrib|
// 	// 00000050  65 20 74 6f 20 67 6f 6c  61 6e 67 2d 61 6e 6e 6f  |e to golang-anno|
// 	// 00000060  75 6e 63 65 2e                                    |unce.|
// }

fn example_encode_to_string() {
    let src = b"Hello";
    let encoded_str = hex::encode_to_string(src);

    println!("{}", encoded_str);

    // Output:
    // 48656c6c6f
}