updated readme for fn syntax
This commit is contained in:
22
README.md
22
README.md
@@ -28,14 +28,14 @@ struct ExampleResponse {
|
||||
email: Str
|
||||
}
|
||||
|
||||
async func handle(req: http.Request, resp: mut http.Response) {
|
||||
async fn handle(req: http.Request, resp: mut http.Response) {
|
||||
log.info("request: ", req.body)
|
||||
let response_data = ExampleResponse{id: 4, name: "Steven", email: "swerbenjagermanjensen@example.com"}
|
||||
await resp.set_status(200)
|
||||
await resp.write(json.encode<ExampleResponse>(response_data))
|
||||
}
|
||||
|
||||
async func main(args: Array<Str>) Int32 {
|
||||
async fn main(args: Array<Str>) Int32 {
|
||||
let router = http.Router("").add_route("/myroute", handle)
|
||||
http_server = http.Server("localhost", 8080, router)
|
||||
let err := await http_server.server_forever()
|
||||
@@ -66,11 +66,11 @@ Methods on a struct must specify if they mutate the struct.
|
||||
|
||||
```
|
||||
impl Dict<Key: Hashable, Value> {
|
||||
func insert(self: mut Dict, key: Key, value: Value) {
|
||||
fn insert(self: mut Dict, key: Key, value: Value) {
|
||||
// mutate self here
|
||||
}
|
||||
|
||||
func get(self: Dict, key: Key) Optional<Value> {
|
||||
fn get(self: Dict, key: Key) Optional<Value> {
|
||||
// no need for `mut`
|
||||
}
|
||||
}
|
||||
@@ -86,18 +86,18 @@ Context is an exceptionally useful feature in golang, but a common complaint is
|
||||
The boring standard library solves this by using parametric polymorphism. Context is by default an empty object passed through the chain, and each function/set of context parameters is an additional trait condition applied at compile time.
|
||||
|
||||
```
|
||||
type HTTPRequest<Ctx: Context> = async func(Ctx, http.Request, mut http.Response)
|
||||
type HTTPRequest<Ctx: Context> = async fn(Ctx, http.Request, mut http.Response)
|
||||
|
||||
pub func tracing_middleware<Ctx: Tracing>(handler: HTTPRequest<Ctx>) HTTPRequest {
|
||||
return async func(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
pub fn tracing_middleware<Ctx: Tracing>(handler: HTTPRequest<Ctx>) HTTPRequest {
|
||||
return async fn(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
with tracing.Span(ctx, "request_duration") {
|
||||
await handler(ctx, req, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub func auth_middleware<Ctx: Auth>(handler: HTTPRequest<Ctx>, scope: Str) HTTPRequest {
|
||||
return async func(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
pub fn auth_middleware<Ctx: Auth>(handler: HTTPRequest<Ctx>, scope: Str) HTTPRequest {
|
||||
return async fn(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
if ctx.has_scope(scope) {
|
||||
await handler(ctx, req, resp)
|
||||
}
|
||||
@@ -106,8 +106,8 @@ pub func auth_middleware<Ctx: Auth>(handler: HTTPRequest<Ctx>, scope: Str) HTTPR
|
||||
}
|
||||
}
|
||||
|
||||
pub func cancel_middleware<Ctx: Cancel>(handler: HTTPRequest<Ctx>) HTTPRequest {
|
||||
return async func(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
pub fn cancel_middleware<Ctx: Cancel>(handler: HTTPRequest<Ctx>) HTTPRequest {
|
||||
return async fn(ctx: Ctx, req: http.Request, resp: mut http.Response) {
|
||||
if !(await ctx.is_cancelled()) { // check cancel token
|
||||
await handler(ctx, req, resp)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user