gost

module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 18, 2023 License: MIT

README

gost

GitHub license

Experience the true taste of Rust in Go

document

Install

go get github.com/myyrakle/gost@{version}

Example

package main

import (
	"math"

	gost "github.com/myyrakle/gost/pkg"
)

func CheckedAdd(a, b gost.Int) gost.Option[gost.Int] {
	max := gost.Int(math.MaxInt64)
	if (b > 0 && a > max-b) || (b < 0 && a < max-b) {
		return gost.None[gost.Int]()
	}

	return gost.Some(a + b)
}

func main() {
	a := gost.Int(1)
	b := gost.Int(2)
	result := CheckedAdd(a, b)

	if result.IsSome() {
		gost.Println("result: {}", result.Unwrap())
	} else {
		gost.Println("result: overflow")
	}

	a = gost.Int(math.MaxInt64)
	b = gost.Int(1)
	result = CheckedAdd(a, b)

	if result.IsSome() {
		gost.Println("result: {}", result.Unwrap())
	} else {
		gost.Println("result: overflow")
	}

	vector := gost.Vec[gost.Int]{}
	vector.Push(gost.Int(3))
	vector.Push(gost.Int(1))
	vector.Push(gost.Int(2))
	vector.Push(gost.Int(4))
	vector.Sort()
	gost.Println("sorted Vec: {}", vector)

	newVec := vector.IntoIter().Map(func(x gost.Int) gost.Int { return x * 2 }).CollectToVec()
	gost.Println("mapped Vec: {}", newVec)

	newVec.Push(gost.Int(7))
	foo := newVec.IntoIter().Fold(gost.Int(0), func(a, b gost.Int) gost.Int { return a + b })
	gost.Println("fold value: {}", foo)

	hashMap := gost.HashMapNew[gost.String, gost.Int]()
	hashMap.Insert(gost.String("foo"), gost.Int(1))
	hashMap.Insert(gost.String("bar"), gost.Int(2))
	hashMap.Insert(gost.String("baz"), gost.Int(3))

	gost.Println("hashMap: {}", hashMap)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL