str
представляет собой неизменяемую последовательность байтов UTF-8 динамической длины где-то в памяти. Поскольку размер неизвестен, его можно обрабатывать только за указателем. Это означает, что str
чаще всего используется как &str
— ссылка на некоторые данные UTF-8, обычно называемые «срезом строки» или просто «срезом». Срез — это просто представление данных, и эти данные могут быть где угодно, например:&'static str.
Данные жестко закодированы в исполняемый файл и загружаются в память при запуске программы.use std::str;
let x: &[u8] = &[b'a', b'b', b'c'];
let stack_str: &str = str::from_utf8(x).unwrap();
String
, если вам требуется владение строковыми данными (например, передача строк в другие потоки или их создание во время выполнения), и используйте &str
, если вам нужно только представление строки. import asyncio
import datetime
import random
import colorama
async def main():
t0 = datetime.datetime.now()
print(colorama.Fore.WHITE + "App started.", flush=True)
data = asyncio.Queue()
task1 = asyncio.ensure_future(generate_data(20, data))
task2 = asyncio.ensure_future(generate_data(20, data))
task3 = asyncio.ensure_future(process_data(40, data))
# Переименовано из "final_task" в "gather_result" т.к. gather возвращает результат (Список значений объектов)
# В данном коде ничего не возвращается и можно удалить print и саму переменную
gather_result = await asyncio.gather(task1, task2, task3)
print(gather_result)
dt = datetime.datetime.now() - t0
print(colorama.Fore.WHITE + f"App exiting, total time: {dt.total_seconds():,.2f} sec.", flush=True)
async def generate_data(num: int, data: asyncio.Queue):
for idx in range(1, num + 1):
item = idx * idx # equal idx ** 2
await data.put((item, datetime.datetime.now()))
print(colorama.Fore.YELLOW + f" -- generated item {idx}", flush=True)
await asyncio.sleep(random.random() + 0.5)
async def process_data(num: int, data: asyncio.Queue):
processed = 0
while processed < num:
item = await data.get()
processed += 1
value = item[0]
t = item[1]
dt = datetime.datetime.now() - t
print(colorama.Fore.CYAN + f" +++ Processed value {value} after {dt.total_seconds():,.2f} sec.", flush=True)
await asyncio.sleep(0.5)
if __name__ == '__main__':
asyncio.run(main())
number.translate(''.maketrans("ABCDEFGHIJKLMNOPQRSTUVWXYZ","22233344455566677778889999"))
db.collection.update_many(
{"delivery_rub": {"$lt": 0}},
[
{
"$set": {
"delivery_rub": {
"$multiply": [
"$delivery_rub",
-1
]
}
}
}
])