Web appOpen in Telegram
PPersian Rust 🦀

Persian Rust 🦀

@rust_persian · group · Tech · indexed since 2026-05-25
368members+11 in a week
27writing in 30 days
427messages in 30 days
42 680messages in the index
K
عجیبه همچین‌کاری کردن، راست همین الان هم WASI رو ساپورت میکنه. میتونستن اون رو بیارن. احتمالا compatibilty بیشتری داشته Emscripten با کد‌های قدیمی و میخواستن راحت‌تر اون کد‌ها رو بیارن روی پلتفرمشون.
H
اصن امسکریپتن منقرض نشده مگه
H
به نظر تصمیم گیری رو به ای عای واگذار کردن
👍1
S
hkalbasiمن نیتیوی در این نمی بینم هنوز
خیلی بهتره مثلا file system روی مموری داره میتونی از fs استفاده کنی بعد تایمر و این چیزا هم کار میکنه روش با تغییراتی که سمت توکیو دادن رانتایم تک ترد توکیو هم روش کار میکنه خیلی مفیده...
    1. S
      چه مزیتی داره به نسبت Emscripten؟ اون یه تارگت بهت میده که این چیزایی که گفتم بهت میده... تارگتش بنظر استیبل تره... این preview هست انگار
      1. H
        استاندارده، تمیز تره، ایسینک داره، جی اس چسب تولید نمی کنه، کنترل می ده روی نوشتن واسط ها که مثلا فایل سیستم مجازی قراره چطور کار کنه، خارج از بروزر پشتیبانی می شه، ...
        👍1
Whole thread · 4 replies →
S
Omidچجپت گفت توی PostgreSQL این شکلی میشه: CREATE TYPE owner AS ENUM ( 'human', 'animal' ); CREATE TABLE objects ( id UUID PRIMARY KEY, owner owner NOT NULL, owner_id UUID NOT NULL );
اینو الان تست کردم شبیه چیزیه که حدس زده :)) این کدمه #[derive(Debug, toasty::Model)] struct Human { #[key] #[auto] id: uuid::Uuid, name: String, } #[derive(Debug, toasty::Model)] struct Animal { #[key] #[auto] id: uuid::Uuid, name: String, color: String, } #[derive(Debug, toasty::Embed)] enum Owner { Human { #[shared(id)] id: uuid::Uuid, #[belongs_to(key = id)] human: toasty::Deferred<Human>, }, Animal { #[shared(id)] id: uuid::Uuid, #[belongs_to(key = id)] animal: toasty::Deferred<Animal>, }, } #[derive(Debug, toasty::Model)] struct House { #[key] #[auto] id: uuid::Uuid, address: String, owner: Owner, } #[tokio::main] async fn main() -> toasty::Result<()> { let mut db = toasty::Db::builder() .models(toasty::models!(crate::*)) .connect("turso://db.sqlite") .await?; db.push_schema().await?; let human = toasty::create!(Human { name: "saeid" }) .exec(&mut db) .await?; toasty::create!(House { address: "far far away", owner: Owner::Human { human }, }) .exec(&mut db) .await?; Ok(()) }
  1. S
    این تیبل‌هایه که ساخته CREATE TABLE "animals" ("id" BLOB NOT NULL, "name" TEXT NOT NULL, "color" TEXT NOT NULL, PRIMARY KEY ("id")); CREATE TABLE "houses" ("id" BLOB NOT NULL, "address" TEXT NOT NULL, "owner" TEXT NOT NULL CHECK ("owner" IN ('human', 'animal')), "owner_id" BLOB, PRIMARY KEY ("id")); CREATE TABLE "humans" ("id" BLOB NOT NULL, "name" TEXT NOT NULL, PRIMARY KEY ("id"));
  2. O
    این فرق داره با اون کد بالا که
    1. S
      میدونم، Object رو با House جایگزین کردم تا ببینم چه فیلدایی اضافه میشه و کجا
      👍1
      1. O
        آهان خوب فرقش چیه؟ شبیه همونه که من (چجپت) گفتم
        1. O
          فقط من PostgreSQL رو گفتم تو sqlite رو تست کردی
          1. O
            احتمالن چون توی sqlite تایپ enum نداریم؟
            1. S
              اونم تقریبا همین میشد، با این تفاوت که احتمالا بجای owner تایپ TEXT بودن میشد ENUM های خود postgres
              👍1
        2. S
          آره دقت نکردم... این دقیقا همون #[derive(Debug, toasty::Model)] struct Human { #[key] #[auto] id: uuid::Uuid, name: String, } #[derive(Debug, toasty::Model)] struct Animal { #[key] #[auto] id: uuid::Uuid, name: String, color: String, } #[derive(Debug, toasty::Embed)] enum Owner { Human { #[shared(id)] id: uuid::Uuid, #[belongs_to(key = id)] human: toasty::Deferred<Human>, }, Animal { #[shared(id)] id: uuid::Uuid, #[belongs_to(key = id)] animal: toasty::Deferred<Animal>, }, } #[derive(Debug, toasty::Model)] struct Object { #[key] #[auto] id: uuid::Uuid, owner: Owner, } #[tokio::main] async fn main() -> toasty::Result<()> { let mut db = toasty::Db::builder() .models(toasty::models!(crate::*)) .connect("turso://db.sqlite") .await?; db.push_schema().await?; let saeid = toasty::create!(Human { name: "saeid" }) .exec(&mut db) .await?; toasty::create!(Object { owner: Owner::Human { human: &saeid }, }) .exec(&mut db) .await?; Ok(()) } تیبلایی که ساخت CREATE TABLE "animals" ("id" BLOB NOT NULL, "name" TEXT NOT NULL, "color" TEXT NOT NULL, PRIMARY KEY ("id")); CREATE TABLE "objects" ("id" BLOB NOT NULL, "owner" TEXT NOT NULL CHECK ("owner" IN ('human', 'animal')), "owner_id" BLOB, PRIMARY KEY ("id")); CREATE TABLE "humans" ("id" BLOB NOT NULL, "name" TEXT NOT NULL, PRIMARY KEY ("id"));
Whole thread · 9 replies →
S
محدودیتی که داره مثلا نمیشه pk تایپی که داریم بهش fk میزنیم بین variant ها فرق داشته باشه... که خوب منطقیه
  1. O
    چرا نشه؟ یه تایپ کاستوم توی راست بساز دیگه حالا باید بگی که توی دیتابیست معادل چی میشه اگر میخوای دو تا ستون متفاوت باشه فکر کنم با اون shared اینا بشه ضمن اینکه احتمالن خیلی مشکل طراحی دیتابیس باشه چنین کاری 😁😅
    1. S
      Photo
      click to show
      اومدم نوع pk رو برای owner تغییر دادم توی کامپایل ارور نداد ولی توی رانتایم پنیک شد :)))
    2. S
      حس "ما توی toasty دیتابیس رو دستی نگاه نمیکنیم" بهم میده :))) کارای عجیب غریبی توی دیتابیس میکنه... مثلا اگه از Embed استفاده کنی تمام فیلد‌های اون تایپی که embed کردی رو فلت میکنه توی تیبلی که داره استفادشون میکنه... تیبل میتونه شلوغ بشه
      😁1
Whole thread · 3 replies →
S
ولی خیلی جالبه درکل... تیبل رو بهم نمیریزه اگه چیزای عجیب غریب نریزی توش... و بنظر یه دید تازه کلا به ORM هاست...

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · What we do not do · Remove a page · Catalog · Search · How we count